如何子串并使用indexOf一个包含多行的字符串

时间:2015-05-18 09:47:07

标签: java string

我正在尝试拆分看起来像这样的字符串:

{
"from": japan
"to": tokyo
},
{
"from": new york
"to": tokyo
},
{ 
 "id": 2509402760, 
 "date": "2016-04-16T00:00:00", 
}

我只想打印出"来自和#34;。我正在使用substring删除ID和数据。

子字符串如下所示:

fullData.substring(fullData.indexOf("{"), (fullData.indexOf("}"));

这个子串的问题在于我只得到第一个"来自和#34;而不是之后的那些是纽约和东京。

为了解决这个问题,我尝试了这个子字符串:

fullData.substring(fullData.indexOf("{"), (fullData.indexOf("},{\"id"));

这个问题是我得到了一个"出界指数"。我认为问题是字符串以新行开头。

如何使indexof与新行匹配,该行以" id"开头。

我无法使用replaceAll替换所有行。我想把它原样子串起来。 我希望您理解我的问题,如果需要,我很乐意提供更多数据。

谢谢。

1 个答案:

答案 0 :(得分:6)

最好的方法是为您的数据使用JSON解析器。如果这不是一个选项,请使用the second overload of indexOf来指定开始查找子字符串的最低位置:

int pos1 = fullData.indexOf("{");
int pos2 = fullData.indexOf("}", pos1);
String sub1 = fullData.substring(pos1, pos2);
int pos3 = fullData.indexOf("{", pos2);
int pos4 = fullData.indexOf("}", pos3);
String sub2 = fullData.substring(pos3, pos4);