Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于逗号分隔符拆分字符串_Java - Fatal编程技术网

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

Java 基于逗号分隔符拆分字符串,java,Java,以下代码中有什么错误 String selectedCountriesStr = countries.replaceAll("[", "").replaceAll("]", "").trim(); String[] selectedCountriesArr = selectedCountriesStr.split(","); 输入字符串[10000200000304050766666] 获取错误java.util.regex.PatternSyntaxException:索引0附近未关闭的字符

以下代码中有什么错误

String selectedCountriesStr = countries.replaceAll("[", "").replaceAll("]", "").trim();
String[] selectedCountriesArr = selectedCountriesStr.split(",");
输入字符串
[10000200000304050766666]


获取错误
java.util.regex.PatternSyntaxException:索引0附近未关闭的字符类

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

replaceAll("\\[", "")
            ^^
因为,正如错误消息所告诉您的,在正则表达式中,字符用于字符类。双反斜杠是必要的,因为
“\[”
将是无效的转义序列。由于反斜杠已转义,正则表达式引擎只接收一个反斜杠

此外,您还可以使用

replace("[", "")
它还将按原样替换给定字符序列的所有出现


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

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

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

此外,您还可以使用

replace("[", "")
它还将按原样替换给定字符序列的所有出现


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

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

.replaceAll("\\[", "").replaceAll("\\]", "")
此外,由于这是一个简单的字符串替换,因此最好使用
.replace()


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

.replaceAll("\\[", "").replaceAll("\\]", "")
此外,由于这是一个简单的字符串替换,因此最好使用
.replace()

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


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

使用
replace()
而不是
replaceAll()
@MarcoForberg:这是一个很好的答案,不是评论。@T.J.Crowder这不是错误消息的原因。如果它被作为答案放置,它可能会被否决而被遗忘。@BLaZuRE这就是我试图避免“快照答案”的原因。@MarcoForberg:好吧,你可以说出错误发生的原因,然后建议
替换
解决方案(毫无疑问,最好的目标是替换
[
字符——正则表达式不是免费的)。使用
replace()
而不是
replaceAll()
@MarcoForberg:这是一个答案(也是一个很好的答案),不是评论。@T.J.Crowder这不是错误消息的原因。如果它被作为答案放置,它可能会被否决而被遗忘。@BLaZuRE这就是我试图避免“快照答案”的原因。@MarcoForberg:好吧,你可以说出错误发生的原因,然后建议
替换
解决方案(这无疑是更好的目标是替换
[
字符——正则表达式不是免费的)。