0

元の文字から変更された文字に重複する文字を挿入する文字列を作成しようとしています。たとえば、1回の実行の出力は次のようになります。

元の単語:

スタック

出力:

sstack、sttack、staack、stacck、stackk

それは理にかなっていますか?私はこれまでにこれを持っていて、私は近くにいるように感じますが、私は弦を再組み立てするために間違った方法を訴えています。任意の助けをいただければ幸いです:

 // Use ToCharArray to convert string to array.                
 char[] array = originalWord.ToCharArray();

 // Loop through array.
 for (int i = 0; i < array.Length; i++)
 {
    // Get character from array.
    char letter = array[i];
    string result = array.ToString();
    string result2 = string.Join("", result.Select(x => x + letter));
    Console.Write(result2);
 }
4

4 に答える 4

3

これは機能するはずです:

var original = "stack";
for (int i = 0; i < original.Length; i++)
    Console.WriteLine(original.Insert(i, original[i].ToString()));
于 2013-01-30T21:01:19.453 に答える
1

String.Insertを使用して、特定のインデックスの文字列を別の文字列に挿入できます。

IEnumerable<string> strings = originalWord
    .Select((c, idx) => originalWord.Insert(idx, c.ToString()));
于 2013-01-30T21:01:59.773 に答える
1

修理済み :

        string originalWord = "stack";
        // Use ToCharArray to convert string to array.                
        char[] array = originalWord.ToCharArray();

        // Loop through array.
        for (int i = 0; i < array.Length; i++)
        {
            // Get character from array.
            char letter = array[i];
            string result = originalWord.Insert(i, letter.ToString(CultureInfo.InvariantCulture));
            Console.WriteLine(result);
        }

Linqの方法:

IEnumerable<string> words = originalWord.Select((letter, i) => originalWord.Insert(i, letter.ToString(CultureInfo.InvariantCulture)));
于 2013-01-30T21:04:58.600 に答える
1

String.Insert()次のような方法を使用できます。

string s = "stack";

for (int i = 0; i < s.Length; i++)
{
   Console.WriteLine (s.Insert(i, s[i].ToString()));
}

これがDEMOです。

なんてこった、私がそれを書いているとき、すでに3つの答えを付け加えた。くそ..

于 2013-01-30T21:14:28.257 に答える