0

Java では、部分文字列関数 (インデックス、長さ) のインデックスは長さよりも大きくすることができます

System.out.print("BCDABCD".substring(3 , 7));

この出力「ABCD」

これは欲しくない

Console.Writeline("BCDABCD".substring(3 , 4));

たとえば、これを生成したい場合:

for i = 0 to 63 {Console.Writeline("BCDABCD".substring(i , i + 1 )));

C#でそれを行う方法は?

4

1 に答える 1

4

String.substring(int, int)Javaの の 2 番目のパラメーターは長さではありません。これは、インデックスの (排他的な) 上限です。一方、.NET では、String.Substring(int, int)reallyの 2 番目のパラメーター長さです。

したがって、Java で呼び出すときはいつでも、それは .NETfoo.substring(x, y)と同じfoo.Substring(x, y - x)です...そして、それを本当に考慮する必要があります。

何をしようとしているのかは明確ではありませんが、ループはJavaでも機能しません。本当に文字列から単一の文字を取得したい場合は、次のようにインデクサーを使用して%ください。

string text = "BCDABCD";
for (int i = 0; i < 63; i++)
{
    Console.WriteLine(text[i % text.Length]);
}

編集:コメントを考えると、あなたはただ欲しいと思う:

for (int i = 0; i < 63; i++)
{
    Console.WriteLine("BCDABCD".Substring(3 - (j & 3), 4));
}

... つまり、長さは常に 4 になります。

于 2013-08-30T15:12:45.157 に答える