字符串java的子串

时间:2015-12-05 00:35:12

标签: java string substring

下面是一个字符串,我想从中获取粗体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:,之间的子字符串。

任何帮助

3 个答案:

答案 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中的所有方法,我建议你这样做,因为你将再次使用这个类。