2

文字列のすべての単語の最後の文字をコピーして、コピーした文字を次の単語の最初の位置に配置しようとしています。たとえば、「The quick brown fox jumps over the lazy dog」という文字列を入力すると、出力は「The equick kbrown nfox xjumps sover rthe elazy ydog」になります。

これが私がこれまでに持っているものです:

string s = "The quick brown fox jumps over the lazy dog";

for (int a = 0; a < s.Length; a++)
{
    string b = s.Substring(a,1);
    if (b == " ")
    {
        string c = s.Substring(a - 1, 1);
        string d = s.Insert (a+1, c);
        Console.Write(d);                     
    }                
}

これの結果は次のとおりです: The quick kbrown fox jumps over the lazy dog茶色のキツネが怠惰な犬を飛び越えます速い茶色のキツネが怠惰な犬を飛び越えます素早く自分のキツネが怠惰な犬を飛び越えます

私が達成しようとしているのは、この出力「The equick kbrown nfox xjumps sover rthe elazy ydog」です

途中で答えてくれたすべての人に感謝します:)

4

6 に答える 6

2

多分:

string[] words = "The quick brown fox jumps over the lazy dog".Split();
string res = String.Join(" ", words.Select((w, i) => i == 0 ? w : words[i-1].Last() + w));

デモ

The equick kbrown nfox xjumps sover rthe elazy ydog
于 2013-02-06T10:59:57.273 に答える
0

答えは比較的簡単です。次を使用して文字列を分割できます

string[] sArray = s.Split(new char[]{' '});

次に、配列を反復処理します

for (int i = 1; i < sArray.Length; i++)
{
    sArray[i] = sArray[i - 1].Substring(sArray[i - 1].Length) + sArray[i];
}
s = string.Join(" ", sArray);
于 2013-02-06T11:01:00.750 に答える
0

このように見えるはずです。

string S= "The quick brown fox jumps over the lazy dog";
                var splitString = S.Split(' ');
                string newS = splitString[0];
                for(int i=1;i<splitString.Length;i++)
                {
                    splitString[i] = splitString[0].ElementAt(splitString[0].Length) + splitString[i];
                    newS += " " + splitString[i];
                }
                Console.WriteLine(newS);
于 2013-02-06T11:02:21.717 に答える
0

これはどうですか?

string s = "The quick brown fox jumps over the lazy dog";

char lastChar = default(char);
bool addLastChar = false;
var stringBuilder = new StringBuilder(s);
for (int i = 0; i < stringBuilder.Length; i++)
{
    var ch = stringBuilder[i];

    // TODO: consider using char.IsWhiteSpace(ch) method call.
    // Please note: it will return true for different whitespace characters (tabulation, line feed, carriage return, etc).
    if (ch == ' ')
    {
        addLastChar = true;
    }
    else
    {
        if (addLastChar)
        {
            stringBuilder.Insert(i, lastChar);
            addLastChar = false;
        }

        lastChar = ch;
    }
}

var result = stringBuilder.ToString();

このコードは、次のように、途中に複数のスペースがある文字列に対しても正常に機能します。

string s = "The    quick    brown   fox jumps over the lazy dog";
于 2013-02-06T11:05:58.193 に答える
0

d単一の文字を挿入する新しい文字列 ( ) を作成し、印刷して忘れます。

あなたができること:

  • 文字列を単語に分割する
  • 言葉を変える
  • それらを結合して新しい文字列にする
于 2013-02-06T10:59:01.893 に答える
0
var words = s.Split(' ').Where(x=>x!="").ToArray();
var str = "";
var sb = new StringBuilder();
for(var i = 0; i< words.Lenght;i++)
{
    sb.Append(str);
    sb.Append(words[i]);
    sb.Append(" ");
    str = words[words.Lenght - 1].ToString();
}

var result = sb.ToString();
于 2013-02-06T11:00:27.303 に答える