2012-07-11 76 views
0

我需要最有效的方式来解析下面的字符串,并使用java从它提取它从中提取imgurljava复杂的字符串解析

{ms:"images,5160.1", 
turl:"http://ts1.mm.bing.net/th?id=I4693880201938488&pid=1.1", 
height:"178",width:"300", 
imgurl:"http://www.attackingsoccer.com/wp-content/uploads/2011/07/World-Cup-2012-Draw.jpg", 
offset:"0",t:"World Cup 2014 Qualification – Europe Draw World Cup 2012 Draw ...", 
w:"719",h:"427",ff:"jpeg", 
fs:"52",durl:"www.attackingsoccer.com/2011/07/world-cup-2012-qualification-europe...", 
surl:"http://www.attackingsoccer.com/2011/07/world-cup-2012-qualification-europe-draw/world-cup-2012-draw/", 
mid:"D9E91A0BA6F9E4C65C82452E2A5604BAC8744F1B",k:"6",ns:"API.images"}" 

对于上述串输出应为:

http://www.attackingsoccer.com/wp-content/uploads/2011/07/World-Cup-2012-Draw.jpg

任何帮助理解。

谢谢!

+0

我试过拆分字符串,然后提取imgurl。然而,问题是我有50多个这样的字符串,并且将所有这些字符串分开浪费了大量资源。这就是为什么我需要更有效率的东西。 – Sid 2012-07-11 06:31:35

+1

@Sid,你的字符串数据看起来像一个[JSON](http://json.org)字符串,所以你可以选择一些JSON库来提取'imgurl'或其他变量。 – 2012-07-11 06:34:55

回答

3

看起来像是JSON消息。 您可以使用例如,将其转换为POJO。 GSON。

1

这是JSON格式。找到一个处理JSON数据的解析器并从那里开始。

0
String str = YOUR STRING; 
String startStr = "imgurl:¥""; 
String endStr = ".jpg"; 

String value = str.subString(str.indexOf(startStr) + startStr.length , str.indexOf(endStr) + endStr.length); 
0

你也可以使用一个PatternMatcher

String string = "something....,imgurl=\"blabla\",somethinother"; 
Pattern p = Pattern.compile(",imgurl=\"[^\"]*\","); 
Matcher m = p.matcher(string); 
m.find(); 
String result = m.group().subSequence(1, m.group().length() - 1).toString(); 

这会工作,即使存在该文字“imgUrl的:”字符串在其他地方或“.JPG”出现。