我在项目中使用substring
,之前我使用的endindex
位置没有创建预期的结果,后来我才知道java substring
执行endindex-1
}。我发现它没用。那么为什么Java正在进行endindex-1
而不是普通endindex
?
我的代码如下。
String str = "0123456789";
String parameter1 = str.substring(0,4);
String parameter2 = str.substring(5,8);`
答案 0 :(得分:3)
它有许多优点,尤其是s.substring(a,b)
的长度为b-a
。
或许更有用的是
s.substring(0,n)
与
相同s.substring(0,k) + s.substring(k,n)
答案 1 :(得分:1)
Java始终将begin参数用作包含,将end参数用作独占以确定范围。
[0:3[ <=> 0, 1, 2
[4:6[ <=> 4, 5
你会在java的API中多次发现这种行为: 列表, 串, ...
几年前在java规范中定义了它。 和imho这很棒,非常有用。 所以有了这个定义,你可以做到这一点。
String x = "hello world";
String y = x.substring(0, x.length() - 6); // 6 = number of chars for "world" + one space.
StringBuilder builder = new StringBuilder(y);
builder.append(x.subSequence(5, x.length())); // 5 is index of the space cause java index always starts with 0.
System.out.println(builder.toString());
否则你总是要计算得到字符串的真实最后一个字符。
答案 2 :(得分:0)
javadoc以这种方式解释了原因
endIndex-beginIndex =子字符串的长度
因此参数定义为
beginIndex - 包含起始索引。 endIndex - 结束索引,独占。
用例就是当你做
之类的事情时int index = 3;
int length = 2;
str.substring(index,index+length);
当以独占方式使用endIndex时,以编程方式执行操作更容易