2012-07-11 73 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」出現。