我有String s = 'muniganesh'
如果我打印s.subString(1, 2)
的值,则输出为'u'
,因为在Java字符串中,索引从0开始。但我需要更改我的字符串以索引位置1开头。怎么可能?
答案 0 :(得分:6)
如果你真的想要,你可以写一个方法:
public static String substring(String str, int beginIndex, int endIndex) {
return str.substring(beginIndex - 1, endIndex - 1);
}
但我强烈建议你不要这样做,因为你可能会混淆s.substring()
和你自己的substring()
,然后会错误地发现1个错误。只是习惯了Java处理字符串的方式,并使用s.substring()
。许多其他流行语言都像Java一样在0开始字符串索引。
答案 1 :(得分:3)
你可以编写自己的实用工具方法来处理#substring(start,end)参数作为从零开始的索引(或者如果你愿意的话,可以处理一个基于索引的索引),但正如@irrelephant所说的那样,你应该这样做习惯了Java如何处理这些特殊情况:第一个参数是从零开始,而第二个参数是从一个基础。 String#substring
不是唯一的例子,还有StringBuilder#delete
,应该有更多。
可能的动机可能是计算结束位置,只需将长度添加到 start 位置,无需额外增量。 E.g:
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'
这不是最好的例子,真正的动机可能会有所不同,但这就是我对这种特殊性的记忆。
答案 2 :(得分:0)
尝试
myString = myString.substring(1); // will give "uniganesh"
答案 3 :(得分:0)
Java数组或字符串(以及大多数其他语言的数组)索引从0开始。使字符串更长,只是不使用第一个索引,或者使用从1到string.length的索引,只需减去一个你实际上索引到字符串。
答案 4 :(得分:0)
Java字符串索引从o开始,最后到字符串长度-1。
所以,如果你使用
String s =“muniganesh”;
s = s.substring(1,2);// output u
System.out.println(""+ s.substring(1)); //output String s = "muniganesh";