1

私は、特定の条件が満たされるたびにコンソールに書き込む必要がある単純なアルゴリズムを書いています。これが私のコードです:

public static void StringTest()
{
    string stringToUse = "Ala BalaB JiBBerish Ala Jibberish Ala BalaB";

    int strLength = stringToUse.Length;
    int i = 0;
    while(i < strLength-4)
    {
        if (stringToUse[i] == stringToUse[(i + 4)] && stringToUse[(i + 1)] == stringToUse[(i + 3)])
            System.Console.WriteLine(stringToUse[i] + stringToUse[(i + 1)] + stringToUse[(i + 2)] + stringToUse[(i + 3)] + stringToUse[(i + 4)]);

        i++;
    }
}

ただし、代わりにリテラル文字列の出力は数値434です。エラーが発生しない理由とその代わりに誰かが私に説明してくれる可能性がある場合、実際の文字を取得するために出力をどのようにフォーマットする必要がありますか?

4

6 に答える 6

6

文字を一緒に追加します-これにより整数値が得られます。おそらくSubstringを使用する必要があるようです。

Console.WriteLine(stringToUse.Substring(i, 5));

または、文字をフォーマットすることもできます。

Console.WriteLine("{0}{1}{2}{3}{4}",
                  stringToUse[i],
                  stringToUse[i + 1],
                  stringToUse[i + 2],
                  stringToUse[i + 3],
                  stringToUse[i + 4]);

(ちなみに、余分な括弧は削除されていることに注意してください。余分な括弧が役立つ場合があります。ここでは、気が散るだけです。)

于 2012-08-08T17:01:27.563 に答える
1

これに一致するようにコードを変更します。

public static void StringTest()
{
    string stringToUse = "Ala BalaB JiBBerish Ala Jibberish Ala BalaB";

    for (int i = 0; i < stringToUse.Length - 4; ++i)
    {
        if (stringToUse[i] == stringToUse[(i + 4)] &&
            stringToUse[(i + 1)] == stringToUse[(i + 3)])
        {
            Console.WriteLine(string.Join(string.Empty,
                stringToUse[i],
                stringToUse[i + 1],
                stringToUse[i + 2],
                stringToUse[i + 3],
                stringToUse[i + 4]));
        }
    }
}

増分変数を使用したforループではなく、ループを使用する必要があります。while

于 2012-08-08T17:08:19.583 に答える
1
Console.WriteLine(stringToUse.substring(i, 5));
于 2012-08-08T17:02:33.543 に答える
1

ctorを使用できますstring。アクセスするには、ではなく[]を取得しますcharstring

if (stringToUse[i] == stringToUse[(i + 4)] && stringToUse[(i + 1)] == stringToUse[(i + 3)])
{
     //Construct string from the sequence of chars you want...
     string result = new string(new char[]{stringToUse[i],
                                     stringToUse[(i + 1)], 
                                         stringToUse[(i + 2)],
                                            stringToUse[(i + 3)], 
                                               stringToUse[(i + 4)]});
     System.Console.WriteLine(result);
}
于 2012-08-08T17:03:04.293 に答える
0

stringToUse[i]タイプcharです。値を追加しているcharので、数値です。代わりに使用しstringToUse.Substring(i, 5)ます。

于 2012-08-08T17:02:33.517 に答える
0
System.Console.WriteLine(new[] {stringToUse[i], stringToUse[(i + 1)],stringToUse[(i + 2)],stringToUse[(i + 3)],stringToUse[(i + 4)]});
于 2012-08-08T17:03:46.867 に答える