2011-10-17 78 views
1

嗨,大家好,我有一個像這樣的刪除關閉括號的Java

String main = "Sandy \"children\":[]" 
String foo = "\"children\":[]"; 

main = main.replaceAll(foo, ""); 

如果我想用一個單個字符「」那我需要使用正則表達式是什麼,以取代在主全富的字符串?

我會是具有JSON數據這樣的,我需要全部更換爲空子對象

{"data" : "Search engines", 
        "children":[ { 
        "data":"Yahoo","children":[{"data":"1","children":[{}]}]}, 
        {"data":"Bing","children":[{"data":"2","children":[]}]},{"data":"Bing2"},{"data":"Bing3"},{"data":"Bing4"},{"data":"Bing5"},{"data":"Bing6"},{"data":"Bing7"},{"data":"Bing34"}]      
        } 
+1

'「」'不一個字符 - 它是一個空字符串。 –

+0

你爲什麼要刪除空的孩子? –

回答

2

好了,現在你已經給更多的信息,我會全力推薦使用正則表達式這個。解析JSON並使用它的DOM表示。否則,一定會有辦法愚弄你所使用的任何東西。像這樣的文本表示與正則表達式IMO完全不匹配。


(原來的答覆...)

它爲什麼你使用replaceAll,並在第一時間正則表達式目前尚不清楚。

我懷疑你只是想:

main = main.replace(foo, ""); 

這將把foo作爲一個正常的字符串,而不是一個正則表達式。除非你真的想要使用正則表達式,請使用replace而不是replaceAll

+0

實際上我會在我的實際字符串中有很多paranthesis – karthick

+0

@karthick:但是你真的想把它們當作正則表達式嗎?目前你的問題很不清楚。給出一些樣本輸入和期望的輸出將是有用的。 –

+0

@@喬恩:我編輯了我的問題 – karthick

0

可以使用Pattern.quote(String),以確保一切都在正則表達式

main = main.replaceAll(Pattern.quote(foo), ""); 
0

算作文字我不知道如果我理解你的問題仍然和解析爲JSON,然後操縱如JavaScript可能是答案。 ..但如果你想要把這個:

{"data" : "Search engines", 
       "children":[ { 
       "data":"Yahoo","children":[{"data":"1","children":[{}]}]}, 
       {"data":"Bing","children":[{"data":"2","children":[]}]},{"data":"Bing2"},{"data":"Bing3"},{"data":"Bing4"},{"data":"Bing5"},{"data":"Bing6"},{"data":"Bing7"},{"data":"Bing34"}]      
       } 

到這一點:

{"data" : "Search engines", 
       "children":[ { 
       "data":"Yahoo","children":[{"data":"1"}]}, 
       {"data":"Bing","children":[{"data":"2"}]},{"data":"Bing2"},{"data":"Bing3"},{"data":"Bing4"},{"data":"Bing5"},{"data":"Bing6"},{"data":"Bing7"},{"data":"Bing34"}]      
       } 

然後用這個表達式:

",?\"children\":\\[(\\{\\})?]" 

如下面的代碼(哇,我認爲這是正確的,但它已經有一段時間...):

String main = "Sandy \"children\":[]" 
String foo = ",?\"children\":\\[(\\{\\})?]"; 

main = main.replaceAll(foo, ""); 
//main == "Sandy " 
+0

哦,等等 - 你說的是Java! hmmmm ...... –