1

以下代码有什么问题?

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

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

得到错误java.util.regex.PatternSyntaxException: Unclosed character class near index 0

4

3 回答 3

8

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

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

因为,正如错误消息告诉您的那样, 用于正则表达式中的字符类。双反斜杠是必要的,因为"\["这将是无效的转义序列。由于反斜杠被转义,正则表达式引擎只接收一个反斜杠。

此外,您可以使用

replace("[", "")

它还将按原样替换所有出现的给定 CharSequence。

您可以在JavaDoc中阅读有关它的更多信息。

于 2013-06-06T10:56:23.763 回答
6

括号是正则表达式元字符,您需要在它们前面加上反斜杠:

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

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

.replace("[", "").replace("]", "")
于 2013-06-06T10:56:28.383 回答
-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);

    }

拆分功能将像这样轻松拆分您的字符串

于 2013-06-06T11:04:35.233 回答