Java:子串索引范围
码:
public class Test { public static void main(String[] args) { String str = "University"; System.out.println(str.substring(4,7)); } }
输出: ers
我真的不明白子串方法是如何工作的。 索引是否从0开始? 如果我从0开始, e
在索引4,但是char i
在7,所以输出将是ersi
。
0:U
1:n
2:我
3:v
4:e
5:r
6:s
7:我
8:t
9:y
开始索引是包含的
结束索引是独占的
Javadoc链接
请参阅javadoc ,这是第一个arg的包含索引,并且是第二个的独占索引
两者都是基于0的,但是开始是包容性的,最后是排他性的。 这确保了结果string的长度是start - end
。 把它们想象成string中的位置而不是实际的字符。
0 1 2 3 4 5 6 7 8 9 uni VER sity se tn ad r t
引用文档 :
子string从指定的
beginIndex
开始,并扩展到索引endIndex - 1
处的字符。 因此子string的长度是endIndex-beginIndex
。
像你,我没有发现它自然而然。 我通常还得提醒自己
-
返回的string的长度是
lastIndex – firstIndex
-
你可以使用string的长度作为lastIndex,即使没有字符那里,试图引用它会抛出一个exception
所以
"University".substring(6, 10)
即使在位置10没有字符,也会返回4个字符的string“ sity"
。
是索引从零开始(0)。 两个参数是startIndex和endIndex,其中每个文档:
子string从指定的beginIndex开始,并扩展到索引endIndex – 1处的字符
在这里看到更多的信息。
对于子string(startIndex,endIndex),startIndex是包含的,endIndex是独占的。 startIndex和endIndex非常混乱。 我会理解substring(startIndex,length)来记住这个。
子string从第一个数字的位置开始,包括字符,但不包括给定的最后一个数字的字符
public String substring(int beginIndex, int endIndex)
beginIndex
– 开始索引,包含。
endIndex
– 结束索引,独占。
例:
public class Test { public static void main(String args[]) { String Str = new String("Hello World"); System.out.println(Str.substring(3, 8)); } }
输出:“lo wo”
从3到7指数
还有另一种substring()
方法。
public String substring(int beginIndex)
beginIndex
– 开始索引,包含。 返回从beginIndex
开始到主String结尾的子string。
例:
public class Test { public static void main(String args[]) { String Str = new String("Hello World"); System.out.println(Str.substring(3)); } }
输出:“lo世界”
从3到最后一个索引
endIndex是非常混淆的术语。 我想动机是保持新的stringendIndex – startIndex的长度。 但是呢? 我想这很容易记住两者都是包容性的,而不是记住开始是包容性的,最终是排他性的。
public class SubstringExample { public static void main(String[] args) { String str="OOPs is a Programing Paradiam.."; System.out.println(" length is ->" +str.length()); System.out.println(" Substring is ->" +str.substring(10, 29)); } }
长度是 – > 31
子串是 – > 编程Paradiam