执行如下的代码
public class App {
public static void main(String[] args) {
String str = "123+456+712";
String[] strings = str.split("+");
System.out.println(Arrays.toString(strings));
}
}
抛出异常
Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character \'+\' near index 0
^
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.sequence(Unknown Source)
at java.util.regex.Pattern.expr(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.
at java.util.regex.Pattern.compile(Unknown Source)
at java.lang.String.split(Unknown Source)
at java.lang.String.split(Unknown Source)
at zx.test.App.main(App.java:12)
出现这种情况的原因是因为String
类的分割方法split
接受的参数是一个正则表达式,而+
这个字符是正则表达式的元字符,需要进行转义,不然就会抛出异常。String
类的split
方法如下。
public String[] split(String regex) {
return split(regex, 0);
}
java的正则中的转义使用\\\\
,因此修改之。\\\\+
将+
从元字符转换成普通的+
字符。
public class App {
public static void main(String[] args) {
String str = "123+456+712";
String[] strings = str.split("\\\\+");
System.out.println(Arrays.toString(strings));
}
}