7

私は本当の初心者で、非常によく似た質問と回答を見つけましたが ( Winforms C# は文字列のテキスト順序を変更します)、特に以下のポイント 3 により少しトリッキーになるため、これについてはまだ助けが必要です。

  1. 文字列は 3 つの「単語」で構成されており、順序を変更する必要があります。文字列は常に同じパターンを持ちます: "WordOne WordTwo WordThree" - 例としては、"Car Storage Sydney"、"Boat Storage Melbourne"、"Caravan Storage Brisbane" などがあります。

  2. 各「単語」は、常に単一のスペースで区切られます。私が理解しているように、これは変数を分割するために使用され、その後、目的の順序変更を実現するために再フォーマットすることができます (以下の 4 を参照)。

  3. ここで少しトリッキーになります。3 番目の「Word」は、実際には 2 つの単語である場合があります。つまり、「WordThree」ではなく「Word Three」である場合があります。別の例で説明すると、「Boat Storage Gold Coast」のほうがわかりやすいでしょう。

  4. 目的の順序変更は「WordThree WordOne WordTwo」(基本的には「WordThree」を後ろから前に移動するだけ)なので、上記 1 と同じ例を使用すると、完成した結果は「Sydney Car Storage」、「Melbourne Boat Storage」になります。 」と「ブリスベン キャラバン ストレージ」。そして、上記の 3. に示すように、2 つの単語で構成される「単語 3」に基づくトリッキーなものは、「ゴールド コースト ボート ストレージ」です。

十分に説明できたことを願っています。

上記の 3. で説明した問題を除いて、次のようなものにする必要があると思います。コードでの初心者の大まかな試みです。

string wordsBefore = "WordOne WordTwo WordThree";
string[] wordsWorking = wordsBefore.Split(new string[]{" "});
string wordsAfter = ("{0} {1} {2}", wordsWorking[2], wordsWorking[0], wordsWorking[1]);

これはかなり近いと思いますか?

ただし、もちろん、上記 3. で説明した問題のために、"WordThree" に 2 つの単語が含まれている場合にそれを検出し、何らかの方法でそれらを 1 つの単語として処理するための追加のコードが必要です。私はあなたが私が何を意味するか知っていると思います!

いくつかの支援を熱心に待っています!

4

5 に答える 5

6

Split特定の数の結果のみを提供するように指示できます。

string wordsBefore = "WordOne WordTwo Word Three";
string[] wordsWorking = wordsBefore.Split(new [] {' '}, 3);
string wordsAfter = string.Format("{0} {1} {2}", 
                wordsWorking[2], wordsWorking[0], wordsWorking[1]);

// result: "Word Three WordOne WordTwo"

または、賢くしたい場合String.Format

string wordsBefore = "WordOne WordTwo Word Three";
string[] wordsWorking = wordsBefore.Split(new [] {' '}, 3);
string wordsAfter = string.Format("{2} {0} {1}", wordsWorking);
于 2013-03-05T17:03:40.420 に答える
3
string wordsBefore = "WordOne WordTwo WordThree";
string[] wordsWorking = wordsBefore.Split();
string wordsAfter = ("{0} {1} {2}", string.Join(" ", wordsWorking.Skip(2)), wordsWorking[0], wordsWorking[1]);
于 2013-03-05T16:58:59.840 に答える
2

複雑にしないでおく。

string wordsBefore = "WordOne WordTwo WordThree";
string[] wordsWorking = wordsBefore.Split(new string[]{" "});
string word1 = wordsWorking[0];
string word2 = wordsWorking[1];
string word3 = wordsWorking[2];

if (wordsWorking.length == 4)
   word3 = word3 + " " + wordsWorking[3];

string wordsAfter = ("{0} {1} {2}", word3 word1, word2);
于 2013-03-05T17:03:37.060 に答える
0

これが私の例です:

string text = "word one<splittag>word two and some other words<splittag>word three with   some text";
        string[] words = text.Split(new string[] { "<splittag>" }, StringSplitOptions.None);
        Label1.Text = String.Format("{2},{0},{1}", words[2], words[0], words[1]);

それが役に立てば幸い!

于 2013-03-05T17:09:43.297 に答える
0
const string wordsBefore = "WordOne WordTwo Word Three";
string[] wordsWorking = wordsBefore.Split();
var thirdWord = wordsWorking.Skip(2).Aggregate((s, s1) => s + " " + s1);    
string wordsAfter = string.Format("{0} {1} {2}", thirdWord, wordsWorking[0], wordsWorking[1]);
于 2013-03-05T17:03:13.753 に答える