下面是一个字符串,我想从中获取粗体ID。
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 :(得分:3)
您收到IndexOutOfBoundsException
因为substring
found that end index was less than the begin index。
抛出: IndexOutOfBoundsException - 如果beginIndex为负数,或者endIndex大于此String对象的长度,或者beginIndex大于endIndex。
您的初始indexOf
来电正确找到id:
,但对s.indexOf(",")
的调用会在字符串中找到第一个,
,这恰好在{{1}之前}。
使用overload of indexOf
that takes a second argument - 开始寻找的索引。
id:
答案 1 :(得分:0)
你的“,”索引在你的“id:”索引之前。你必须在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?
答案 2 :(得分:0)
我建议你使用
s.indexOf(",", ind)
获取位于id:
之后的逗号,而不是字符串中的第一个逗号。
如果你还没有读过String中的所有方法,我建议你这样做,因为你将再次使用这个类。