Java: диапазон индекса подстроки
код:
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
.
10 ответов:
0: U
1: n
2: я
3: v
4: e
5: r
6: s
7: я
8: t
9: y
начальный индекс включен
конечный индекс является эксклюзивным
оба основаны на 0, но начало включено, а конец является эксклюзивным. Это гарантирует, что результирующая строка имеет длину
start - end
. Думайте о них как о позициях в строке, а не о реальных символах.0 1 2 3 4 5 6 7 8 9 u n i V E R s i t y s e t n a d r t
со ссылкой на docs:
подстрока начинается в указанном
beginIndex
и распространяется на символ в индексеendIndex - 1
. Таким образом длина подстроки равнаendIndex-beginIndex
.
посмотреть javadoc. Это инклюзивный индекс для первого аргумента и эксклюзивный для второго.
Как и вы, я не нашел, что это произошло естественно. Я обычно все еще должен напоминать себе, что
the длина возвращаемой строки
lastIndex-firstIndex
что вы можете использовать длину строки в качестве lastIndex, даже если там нет символа, и попытка ссылаться на него вызовет исключение
так
"University".substring(6, 10)
возвращает 4-символьную строку "
sity"
даже если в позиции 10 нет символа.
да, индекс начинается с нуля (0). Два аргумента-startIndex и endIndex, где в документации:
подстрока начинается с указанного beginIndex и продолжается до символа в индексе endIndex - 1.
посмотреть здесь для получения дополнительной информации.
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 до последнего индекса.
для подстроки(параметр startindex, endindex включительно), параметр startindex и endindex включительно являются эксклюзивными. StartIndex и endIndex очень запутаны. Я бы понял подстроку (startIndex, length), чтобы помнить это.
подстрока начинается с и включает символ в месте первого заданного числа и переходит к, но не включает символ в последнем заданном числе.