Java - 按“]分割字符串

时间:2017-10-04 15:00:55

标签: java string split

我有一个字符串,看起来像这样:[apple,peach,plum]。 我想用“[”和“]”拆分它以获取“列表”的项目,但它不适用于此解决方案:

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];

并且它有效,所以我认为问题是“]”符号。)

有什么想法吗?

2 个答案:

答案 0 :(得分: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]

答案 1 :(得分:0)

你也可以使用带有正则表达式\\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));
        ...

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