2017-04-11 67 views
2

列表我試圖在:,"{[ }] 一個字符串分割成一個列表的基礎這是我的代碼,字符串分割爲Java中

List<String> list = new ArrayList<String>(Arrays.asList(line.split("{ | } | \\"| : | [ | ]|,"))); 

這是沒有編制。我並不擅長正則表達式。請任何幫助。

+0

的可能的複製[如何將字符串轉換成一個ArrayList?](http://stackoverflow.com/questions/7347856/how-to-convert-a-string-into-an-arraylist) – lmiguelvargasf

+1

你想分裂一個JSON字符串? –

+0

@lmiguelvargasf我可以轉換字符串,如果分隔符只是1個逗號,但不是在這種情況下,因此問題。 –

回答

3

你的意思是你想它分裂 「每當你看到:或者,或」?或{或[或}或者]「如果是這樣的,你真的不需要說遠不止:在下面的字符類定義的任何字符

.split("[:,\"{\\[ }\\]]") 

即「分裂::,"{[ }]「,在那裏我們使用標準的正則表達式字符類定義語法([...])和適當的轉義。

通常情況下,這意味着一個正則表達式,看起來像/[:,"{\[ }\]]/而是因爲你在寫內部正常的字符串一個正則表達式,需要更多的轉義:"需要定期串溢出,使得您的字符串不會過早結束(使變成\"),並且[]是正則表達式中的活動字符,所以他們在之前需要\在正則表達式中。但是,我們不能只將\放在字符串中並使其工作,因爲\是轉義字符,所以我們需要「轉義轉義」,這意味着使用\\(給出\\[\\])。

String[] result = "a:b,c\"d{e[f g}h]i".split("[:,\"{\\[ }\\]]"); 
System.out.print(result.length); 
// => result has 9 elements in it, ['a',...,'i'] 
1

這不是編譯,因爲你沒有逃過引號,而是反斜槓本身。

變化:

\\" 

要:

\"