2015-12-05 6 views
-1

Ниже приведена строка, и я хочу получить жирный идентификатор.Подстрока строки java

String s = "> Index1 is: 261 String is: href: <a href="https://www.clover.com/v3/merchants/4B8BF3Y5NJH7P/orders/K0AH5696MRG6J?access_token=4ffcfacefd3b2e9611a448da68fff91f">https://www.clover.com/v3/merchants/4B8BF3Y5NJH7P/orders/K0AH5696MRG6J?access_token=4ffcfacefd3b2e9611a448da68fff91f</a>, id: **K0AH5696MRG6J**, currency: USD, title: Greta , note: This is test ,"; 
int ind = s.indexOf("id:"); 
s = s.substring(ind,s.indexOf(",")); 

Дает код ошибки из связанного.

Я знаю, что это ошибка, потому что в substring (int, int) второе значение параметра неверно.

Я пытаюсь получить подстроку между id: и ,.

Любая помощь

ответ

0

Я предлагаю вам использовать

s.indexOf(",", ind) 

получить запятую, которая после id:, а чем первый в String.

Если вы еще не прочитали все методы в String, я предлагаю вам сделать это, как только вы снова будете использовать этот класс и снова.

+0

Спасибо, что работает. Да, я прочитаю документы :) – user1486269

+0

@ user1486269 Я не знаю, сколько лет я использовал Java, прежде чем я прочитал Javadocs для 'java.lang' и' java.util' до конца и пожелал, чтобы я сделал это раньше. –

0

ваш "" индекс перед вашим "ID:" индекс. Вы должны искать, после того, как идентификатор

// Search id: 
int ind = s.indexOf("id:"); 

// After that: search comma 
int comma = s.indexOf(",", ind +1); 

это объясняет такого рода проблемы:

How to use substring and indexOf for a String with repeating characters?

+0

Как следует искать после ID? – user1486269

3

Вы получаете IndexOutOfBoundsException, потому что substring found that end index was less than the begin index.

Броски: IndexOutOfBoundsException - если beginIndex отрицательный, или ENDINDEX больше, чем длина этой строки объекта или beginIndex больше ENDINDEX.

Ваш первоначальный indexOf вызов находит id: правильно, но вызов s.indexOf(",") находит в строке, которая случается перед тем id: первый ,.

Используйте overload of indexOf that takes a second argument - индекс, с которого следует начинать поиск.

s = s.substring(ind,s.indexOf(",", ind)); 
+0

Спасибо, что работает :) – user1486269

Смежные вопросы