码迷,mamicode.com
首页 > 编程语言 > 详细

java split函数报错

时间:2018-01-18 01:02:17      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:exception   原因   就会   sequence   字符   string   print   markdown   情况   

执行如下的代码

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.

出现这种情况的原因是因为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));
    }
}

参考

读懂正则表达式就这么简单
Java正则表达式的语法与示例

java split函数报错

标签:exception   原因   就会   sequence   字符   string   print   markdown   情况   

原文地址:https://www.cnblogs.com/ZiYangZhou/p/8306790.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!