диапазон индекса подстроки - PullRequest
66 голосов
/ 31 декабря 2010

Код:

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 ]

129 голосов
/ 31 декабря 2010

0: U

1: n

2: i

3: v

4: e

5: r

6: s

7: i

8: t

9: y

Начальный индекс включительно

Конечный индекс эксклюзив

Ссылка Javadoc

12 голосов
/ 31 декабря 2010

Оба основаны на 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"

Цитирование документов :

Подстрока начинается с указанного beginIndex и продолжается до символа с индексом endIndex - 1.Таким образом, длина подстроки составляет endIndex-beginIndex.

9 голосов
/ 31 декабря 2010

См. Javadoc . Это включающий индекс для первого аргумента и исключительный для второго.

4 голосов
/ 31 декабря 2010

Как и вы, я не обнаружил, что это естественно.Обычно я все еще должен напоминать себе, что

  • длина возвращаемой строки равна

    lastIndex - firstIndex

  • что вы можете использовать длину строки в качестве lastIndex, даже если там нет символа и попытка сослаться на него приведет к исключению

, поэтому

"University".substring(6, 10)

возвращает 4-символьную строку "sity", даже если в позиции 10 нет символа.

3 голосов
/ 01 ноября 2016
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 голосов
/ 31 декабря 2010

Да, индекс начинается с нуля (0).Два аргумента - startIndex и endIndex, где согласно документации:

Подстрока начинается с указанного beginIndex и продолжается до символа в индексе endIndex - 1.

См. здесь для получения дополнительной информации.

1 голос
/ 01 октября 2015

Подстрока начинается с и включает символ в месте первого заданного числа и переходит к нему, но не включает в себя символ последнего заданного числа.

0 голосов
/ 23 июня 2017
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
0 голосов
/ 05 августа 2013

Для подстроки (startIndex, endIndex) startIndex является включающим, а endIndex - исключительным. StartIndex и endIndex очень сбивают с толку. Я бы понял подстроку (startIndex, length), чтобы запомнить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...