将字符串拆分为Java中的列表

时间:2017-04-11 23:20:26

标签: java regex

我正在尝试将字符串拆分为:,"{[ }]上的列表库 这是我的代码,

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

哪个没有编译。我并不擅长正则表达式。请帮忙。

2 个答案:

答案 0 :(得分:4)

你的意思是你希望它“分开”,只要你看到:或,或“或{或[或}或]”?如果是这样,你真的不需要多说:

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

即。 “拆分以下字符类定义中的任何字符::,"{[ }]”,我们使用标准的正则表达式字符类定义语法([...])并进行适当的转义。

通常这意味着一个看起来像/[:,"{\[ }\]]/的正则表达式,但是因为你在正常字符串的里面写了一个正则表达式,所以需要更多转义:"需要常规字符串转义,因此你的字符串不会过早结束(因此变为\"),[]是正则表达式中的活动字符,因此它们需要\ < em>在正则表达式。但是,我们不能只将\放在字符串中并让它工作,因为\是转义字符,因此我们需要“逃避转义”,这意味着使用\\(给出\\[\\])。

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 :(得分:1)

它没有编译,因为你没有逃避引号,而是反斜杠本身。

变化:

\\"

要:

\"