基于逗号分隔符拆分字符串

时间:2013-06-06 10:54:52

标签: java

以下代码有什么问题?

String selectedCountriesStr = countries.replaceAll("[", "").replaceAll("]", "").trim();
String[] selectedCountriesArr = selectedCountriesStr.split(",");

输入字符串[10000,20000,304050,766666]

获取错误java.util.regex.PatternSyntaxException: Unclosed character class near index 0

3 个答案:

答案 0 :(得分:8)

你必须转义方括号,因为replaceAll()将第一个参数解释为正则表达式:

replaceAll("\\[", "")
            ^^

因为,正如错误消息所示,它用于正则表达式中的字符类。需要双反斜杠,因为"\["将是无效的转义序列。由于反斜杠被转义,正则表达式引擎只收到一个反斜杠。

此外,您可以使用

replace("[", "")

它也将原样替换给定CharSequence的所有次出现。

您可以在JavaDoc中了解更多相关信息。

答案 1 :(得分:6)

括号是正则表达式元字符,你需要用反斜杠作为前缀:

.replaceAll("\\[", "").replaceAll("\\]", "")

此外,由于这是一个简单的字符串替换,您最好使用.replace()

.replace("[", "").replace("]", "")

答案 2 :(得分:-1)

     String str = "hi,hello,abc,example,problems";
    String[] splits = str.split(",");

    System.out.println("splits.size: " + splits.length);

    for(String asset: splits){
    System.out.println(asset);

    }

分割功能可以轻松分割你的字符串