我有一个String s = 'muniganesh'
,如果我打印 的值s.subString(1, 2)
,则输出为'u'
,因为在 Java 字符串中,索引从 0 开始。但我需要更改我的字符串以从索引位置 1 开始。这怎么可能?
5 回答
如果你真的很想,你可以写一个方法:
public static String substring(String str, int beginIndex, int endIndex) {
return str.substring(beginIndex - 1, endIndex - 1);
}
但我强烈建议你不要这样做,因为你可能会混淆s.substring()
和你自己substring()
的错误并得到 1 个错误。只需习惯 Java 处理字符串的方式,然后使用s.substring()
. 许多其他流行语言从 0 开始字符串索引,如 Java。
您可以编写自己的实用程序方法来处理两个 #substring(start, end) 参数作为从零开始的索引(或者如果您愿意,也可以从一开始的索引),但正如@irrelephant 所说,不建议这样做,您应该习惯Java 如何处理这些特殊情况:第一个参数是从零开始的,而第二个是从一开始的。String#substring
不是唯一的例子,还有StringBuilder#delete
,而且应该还有更多。
可能的动机可能是通过简单地将长度添加到开始位置而无需额外增加来计算结束位置。例如:
String source = "In Java world, end position index may be one-based";
int indexOfP = source.indexOf('p');
String result = source.substring(indexOfP, indexOfP + 8);
System.out.println(result); // prints 'position'
这不是最好的例子,真正的动机可能不同,但这就是我对这种特殊性的记忆。
尝试
myString = myString.substring(1); // will give "uniganesh"
Java 字符串索引从 o 开始,到 d 结束,字符串长度为 -1。
所以如果你使用
字符串 s = "muniganesh";
s = s.substring(1,2);// output u
System.out.println(""+ s.substring(1)); //output String s = "muniganesh";
Java 数组或字符串(以及大多数其他语言的数组)索引从 0 开始。使字符串变长并且根本不使用第一个索引,或者使用从 1 到 string.length 的索引并在实际索引时简单地减去一个进入字符串。