|
Java: substring возвращает StringIndexOutOfBoundsException | ☑ | ||
|---|---|---|---|---|
|
0
Rizhij_Nikitos
19.12.13
✎
15:58
|
Пишу под java в eclipse
Элементарный кусок кода: String str = "Привет, я новая строка! Во мне содержится много определений для примера работы со строками. Сейчас будем разбираться."; String str1="се"; String str2=str.substring(str.toLowerCase().indexOf(str1),str1.length()); 3 строка возвращает мне исключени по выходу за границы строки. Лезу в отладчик, начинаю вычислять и реально сваливаюсь в это исключение, хотя str.lenght() возвращает 117, даже str.substring(2,1) возвращает мне то же исключение... Че не так то? Чего я не понимаю? |
|||
|
1
sapphire
19.12.13
✎
16:02
|
substring
public String substring(int beginIndex, int endIndex) Returns a new string that is a substring of this string. The substring begins at the specified beginIndex and extends to the character at index endIndex - 1. Thus the length of the substring is endIndex-beginIndex. Examples: "hamburger".substring(4, 8) returns "urge" "smiles".substring(1, 5) returns "mile" Parameters: beginIndex - the beginning index, inclusive. endIndex - the ending index, exclusive. Returns: the specified substring. Throws: IndexOutOfBoundsException - if the beginIndex is negative, or endIndex is larger than the length of this String object, or beginIndex is larger than endIndex. |
|||
|
2
sapphire
19.12.13
✎
16:03
|
str.substring(2,1)
beginIndex is larger than endIndex |
|||
|
3
Rizhij_Nikitos
19.12.13
✎
16:04
|
Долбаная 1Ска...
|
|||
|
4
Rizhij_Nikitos
19.12.13
✎
16:06
|
Спасибо, совсем запарился походу.
|
|||
|
5
sapphire
19.12.13
✎
16:11
|
(4) Будь внимателен, смотри:
String str2=str.substring(str.toLowerCase().indexOf(str1),str1.length()); разбираем по частям, то, что справа: substring принимает в твоем случае 2 параметра типа int: 1.beginIndex=str.toLowerCase().indexOf(str1); и здесь все хорошо 2.endIndex = str1.length; ВОТ ЗДЕСЬ ОШИБКА т.к. длина str1=2, а beginIndex явно больше. Таким образом правильно будет заменить str1.length на просто str1.length: String str2=str.substring(str.toLowerCase().indexOf(str1),str.length()); |
|||
|
6
Rizhij_Nikitos
19.12.13
✎
16:20
|
да, да, я понял что я по примеру функции Сред() пытаюсь засунуть в 1 параметр номер символа начала, а потом количество вырезаемых символов, хотя надо последний символ вхождения(его номер). Еще раз спасибо
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |