Подтвердить что ты не робот

диапазон индекса подстроки

Код:

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.

4b9b3361

Ответ 1

0: U

1: n

2: i

3: v

4: e

5: r

6: s

7: i

8: t

9: y

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

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

ссылка Javadoc

Ответ 2

Оба основаны на 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 начинается с указанного beginIndex и продолжается до символа с индексом endIndex - 1. Таким образом, длина подстроки равна endIndex-beginIndex.

Ответ 3

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

Ответ 4

Как и вы, я не нашел, что это было естественно. Мне обычно приходится напоминать себе, что

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

    lastIndex - firstIndex

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

так

"University".substring(6, 10)

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

Ответ 5

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

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

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

Ответ 6

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

Вывод: "вот во"

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

Вывод: "мир лоу"

От 3 до последнего индекса.

Ответ 7

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

Ответ 8

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

Ответ 9

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

Ответ 10

EndIndex - очень запутанный термин. Я думаю, что мотивом было сохранить длину новой строки до endIndex - startIndex. Ну и что? Я предполагаю, что было легче запомнить, что оба являются включающими, а не вспоминать начало включительно, а конец - исключительно.