以下代码有什么问题?
String selectedCountriesStr = countries.replaceAll("[", "").replaceAll("]", "").trim();
String[] selectedCountriesArr = selectedCountriesStr.split(",");
Run Code Online (Sandbox Code Playgroud)
输入字符串 [10000,20000,304050,766666]
得到错误 java.util.regex.PatternSyntaxException: Unclosed character class near index 0
您必须转义方括号,因为replaceAll()将第一个参数解释为正则表达式:
replaceAll("\\[", "")
^^
Run Code Online (Sandbox Code Playgroud)
因为,正如错误消息告诉您的那样,它用于正则表达式中的字符类.双反斜杠是必要的,因为"\["它将是无效的转义序列.由于反斜杠被转义,正则表达式引擎只收到一个反斜杠.
另外,你可以使用
replace("[", "")
Run Code Online (Sandbox Code Playgroud)
它也将原样替换给定CharSequence的所有出现.
您可以在JavaDoc中阅读有关它的更多信息.
括号是正则表达式元字符,你需要用反斜杠作为前缀:
.replaceAll("\\[", "").replaceAll("\\]", "")
Run Code Online (Sandbox Code Playgroud)
此外,由于这是一个简单的字符串替换,您最好使用.replace():
.replace("[", "").replace("]", "")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6664 次 |
| 最近记录: |