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

ldioqlga  于 2021-06-30  发布在  Java
关注(0)|答案(3)|浏览(368)

下面的代码有什么问题?

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

输入字符串 [10000,20000,304050,766666] 获取错误 java.util.regex.PatternSyntaxException: Unclosed character class near index 0

4xy9mtcn

4xy9mtcn1#

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

    }

split函数可以像这样轻松地拆分字符串

vdzxcuhz

vdzxcuhz2#

方括号是regex元字符,需要在它们前面加反斜杠:

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

另外,因为这是一个简单的字符串替换,所以最好使用 .replace() :

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

cygmwpex3#

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

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

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

replace("[", "")

它还将按原样替换给定charsequence的所有出现。
您可以在javadoc中阅读更多关于它的内容。

相关问题