子串索引范围

时间:2010-12-31 12:15:20

标签: java string substring

代码:

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

9 个答案:

答案 0 :(得分:128)

0:U

1:n

2:我

3:v

4:e

5:r

6:s

7:我

8:t

9:y

开始索引包含

结束索引是独占的

Javadoc link

答案 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