以下代码有什么问题?
String selectedCountriesStr = countries.replaceAll("[", "").replaceAll("]", "").trim();
String[] selectedCountriesArr = selectedCountriesStr.split(",");
输入字符串[10000,20000,304050,766666]
获取错误java.util.regex.PatternSyntaxException: Unclosed character class near index 0
答案 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);
}
分割功能可以轻松分割你的字符串