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

Java 中的第二个参数String.substring(int, int)不是长度——它是索引的(独占)上限。而在 .NET 中,第二个参数String.Substring(int, int)真的长度。

因此,任何时候调用foo.substring(x, y)Java 时,它都等同于foo.Substring(x, y - x)使用 .NET ......你真的需要考虑到这一点。

目前还不清楚您要做什么,但您的循环在 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 回答