子串索引范围


74

码:

public class Test {
    public static void main(String[] args) {
        String str = "University";
        System.out.println(str.substring(4, 7));
    }   
}

输出: ers

我不太了解substring方法的工作原理。索引是否从0开始?如果我从0开始,e则在索引4处,而chari在7处,因此输出应为ersi


另外,如果将begin索引作为str.length()放置,则不会抛出IndexOutofBounds异常。它只会返回一个空字符串。
2016年

Answers:


142

0:U

1:n

2:我

3:v

4:e

5:r

6:秒

7:我

8:t

9:是

起始索引包括在内

结束索引是排他的

Javadoc链接


2
谢谢,这正是我发现的信息;beginIndex-起始索引(含)。endIndex-结束索引(不包括)。
Upvote 2010年

只需将其视为所有其他数组都以0为底的char数组,第二个参数就是停止位置而不是结束位置。
亨里克·埃兰森

14

两者都是从0开始的,但是开始是包容性的,而结束是排斥性的。这样可以确保生成的字符串为length 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"

引用文档

子字符串从指定的字符串开始, beginIndex并扩展到index的字符endIndex - 1。因此,子字符串的长度为 endIndex-beginIndex


8

参见javadoc。它是第一个参数的包含索引,第二个参数是排斥索引。


4

像你一样,我没有发现它是自然而然的。我通常还是要提醒自己

  • 返回的字符串的长度

    lastIndex-firstIndex

  • 即使那里没有字符,您也可以使用字符串的长度作为lastIndex,尝试引用它会抛出异常

所以

"University".substring(6, 10)

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));
    }
 }

输出:“ lo Wo”

从3到7的索引。

另外还有另一种substring()方法:

public String substring(int beginIndex)

beginIndex—包含索引的开始索引。返回从beginIndex主字符串开始到结尾的子字符串。

例:

public class Test {

    public static void main(String args[]) {
        String Str = new String("Hello World");

        System.out.println(Str.substring(3));
    }
}

输出:“ lo World”

从3到最后一个索引。


2

是的,索引从零(0)开始。两个参数分别是startIndex和endIndex,在文档中:

子字符串从指定的beginIndex开始,并扩展到索引endIndex-1处的字符。

有关更多信息,请参见此处


1

子字符串从第一个数字开始,并在给定的第一个数字的位置包含字符,然后转到,但在最后一个给定的数字不包括该字符。


0

对于substring(startIndex,endIndex),startIndex是包含的,而endIndex是排除的。startIndex和endIndex非常令人困惑。我会理解substring(startIndex,length)来记住这一点。


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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.