代码:
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 :(得分:128)
答案 1 :(得分:12)
两者都是基于0的,但是开始是包容性的,结束是独占的。这可确保生成的字符串长度为start - end
。
为了让substring
操作更轻松,请想象索引之间的字符是。
0 1 2 3 4 5 6 7 8 9 10 <- available indexes for substring
u n i v E R S i t y
↑ ↑
start end --> range of "E R S"
引用docs:
子字符串从指定的开始
beginIndex
并延伸至 索引endIndex - 1
处的字符。从而 子串的长度是endIndex-beginIndex
。
答案 2 :(得分:9)
见the javadoc。它是第一个参数的包容性索引,而第二个参数是独占的。
答案 3 :(得分:4)
返回字符串的长度是
lastIndex - firstIndex
你可以使用字符串的长度作为lastIndex,即使那里没有字符并且尝试引用它会抛出异常
所以
"University".substring(6, 10)
返回4个字符的字符串“sity"
,即使位置10没有字符。
答案 4 :(得分:3)
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));
}
}
输出:&#34; lo Wo&#34;
从3到7指数。
还有另一种substring()
方法:
public String substring(int beginIndex)
beginIndex
- 开头索引,包括在内。
返回从beginIndex
开始到主String结尾的子字符串。
示例:
public class Test {
public static void main(String args[]) {
String Str = new String("Hello World");
System.out.println(Str.substring(3));
}
}
输出:&#34; lo World&#34;
从3到最后一个索引。
答案 5 :(得分:2)
是的,索引从零开始(0)。这两个参数是startIndex和endIndex,其中每个文档:
子字符串从指定的beginIndex开始,并扩展到索引endIndex - 1处的字符。
有关详细信息,请参阅here。
答案 6 :(得分:1)
子字符串从,并包含给定的第一个数字的位置处的字符,但不包括给定的最后一个数字处的字符。
答案 7 :(得分:0)
对于substring(startIndex,endIndex),startIndex是包含的,endIndex是独占的。 startIndex和endIndex非常令人困惑。 我会理解substring(startIndex,length)来记住它。
答案 8 :(得分:0)
public class SubstringExample
{
public static void main(String[] args)
{
String str="OOPs is a programming paradigm...";
System.out.println(" Length is: " + str.length());
System.out.println(" Substring is: " + str.substring(10, 30));
}
}
输出:
length is: 31
Substring is: programming paradigm