2017-10-04 40 views
0

我有一个字符串,看起来像这样:[apple,peach,plum]。 我想用“[”和“]”来分割它获得了“名单”的项目,但它并没有与此解决方案的工作:Java - Split strings by“]”

String string = "[apple, peach, plum]"; 
String splitted = (string.split(Pattern.quote("["))[1]).split(Pattern.quote("]"))[0]; 

第一分割工作,但我的时候试着用“]”分割它,它什么也不做。

(我试过这样:

String splitted = (string.split(Pattern.quote("["))[1]).split(Pattern.quote(","))[0]; 

和它的工作,所以我觉得这个问题是 “]” 符号。)

任何想法?

+3

我想你想'string.replaceAll(“[\\ [\\]]”,“”);' –

+0

非常感谢您的及时回复! – SummerFlower

回答

2

你实际上并不想用方括号来分割,你只是想消除它们并用逗号分割。

如果你的输入是一致的,你可以用下面的习惯:

String string = "[apple, peach, plum]"; 
System.out.println(
    // Array String representation 
    Arrays.toString(
     // removing square brackets 
     string.substring(1, string.length() - 1) 
     // splitting by comma + optional whitespace 
     .split(",\\s*") 
    ) 
); 

输出(注意,这是由你的项目的String数组)

[apple, peach, plum] 
0

您还可以使用一个Pattern + Matcher与正则表达式\\s*(\\[)?([^,]*)(\\])?\\s*

 Pattern pat = Pattern.compile("\\s*(\\[)?([^,]*)(\\])?\\s*"); 
     Matcher m = pat.matcher(string); 
     m.find(); 
     System.out.println(m.group(2)); 
     m.find(); 
     System.out.println(m.group(2)); 
     ... 

该模式采用所有以逗号(([^,]+))分隔的文件,该文件可以以[ ((\[)?)开头,并以(\])?结尾。

+0

你能解释一下这个模式吗? – Zabuza

+0

该模式采用逗号分隔的所有内容(([^,] +)),并且可以以[((\\ [)?)开始并以(\\]结尾)? – Tuco

+0

为什么你在角色类中放置括号? OP中没有。 – Toto