діапазон індексу підрядка


74

Код:

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.


Крім того, якщо ви встановите індекс begin як str.length (), він не викличе виняток IndexOutofBounds. Він просто поверне порожній рядок.
आनंद

Відповіді:


142

0: U

1: п

2: i

3: с

4: е

5: р

6: с

7: i

8: т

9: y

Індекс старту включений

Кінцевий індекс ексклюзивний

Посилання Javadoc


2
дякую, саме це я знайшов інформативним; beginIndex - індекс початку включно. endIndex - кінцевий індекс, ексклюзивний.
Проголосувати

Просто подумайте про це як про масив char з базою 0, як про всі інші масиви, і що другий аргумент - це позиція зупинки, а не кінцева позиція.
Генрік Ерландссон

14

Обидва базуються на 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.


8

Дивіться javadoc . Це індекс включення для першого аргументу та ексклюзив для другого аргументу.


4

Як і ти, я не знайшов, що це прийшло природно. Зазвичай я все ще повинен нагадувати собі про це

  • довжина повертається рядка є

    lastIndex - firstIndex

  • що ви можете використовувати довжину рядка як lastIndex, хоча там немає символу, і спроба посилання на нього викличе виняток

так

"University".substring(6, 10)

повертає 4-символьний рядок ", sity"хоча в положенні 10 немає символу.


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

Вихід: "ось 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));
    }
}

Результат: "ось світ"

Від 3 до останнього індексу.


2

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

Підрядок починається з вказаного beginIndex і поширюється на символ з індексом endIndex - 1.

Дивіться тут для отримання додаткової інформації.


1

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


0

Для підрядка (startIndex, endIndex) startIndex є інклюзивним, а endIndex ексклюзивним. StartIndex та endIndex дуже заплутані. Я б розумів підрядок (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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.