使用split()遇到的问题和方法总结 ( Dangling meta character 和 多个分隔字符)
2015-07-15 15:56
661 查看
今天在尝试用“+-*、”来分割字符串的时候 一次把两个问题都遇到了
第一个问题:
Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 0
+-/*
^
而 “ * ”也有类似问题:
Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0
*
^
而“|” 也会导致类似的问题
总之遇到了 “Dangling meta character” 就加上牌子“\\”试试,比如“\\*”就不会有问题了
解决方法:
给这样的"Dangling meta character" 前置一块牌子,也就是加上“\\”,
例如:
(把出错的) String[] str = s.split("*");
加上“\\”, 改成 String[] str = s.split("\\*"); (也就没问题了)
而想使用多个字符来分割的话,比如“+-*/”如果你发现结果不妥的话,那么也许是因为编译器认为你是在用着一整个字符串“+-*/”来分隔,而不是使用了四个分隔符,
使用多个分隔符的时候,要好好地告诉编译器,用“|”(按位或)来相区别各个分隔符,
例如:
想把 "12.93+18-20/4+2*41" 分成: 12.93 18 20 4 2 41
那就把 split("+-/*")
改成 split("\\+|-|/|\\*")
其中\\的作用前面已经提到了
第一个问题:
Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 0
+-/*
^
而 “ * ”也有类似问题:
Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0
*
^
而“|” 也会导致类似的问题
总之遇到了 “Dangling meta character” 就加上牌子“\\”试试,比如“\\*”就不会有问题了
解决方法:
给这样的"Dangling meta character" 前置一块牌子,也就是加上“\\”,
例如:
(把出错的) String[] str = s.split("*");
加上“\\”, 改成 String[] str = s.split("\\*"); (也就没问题了)
而想使用多个字符来分割的话,比如“+-*/”如果你发现结果不妥的话,那么也许是因为编译器认为你是在用着一整个字符串“+-*/”来分隔,而不是使用了四个分隔符,
使用多个分隔符的时候,要好好地告诉编译器,用“|”(按位或)来相区别各个分隔符,
例如:
想把 "12.93+18-20/4+2*41" 分成: 12.93 18 20 4 2 41
那就把 split("+-/*")
改成 split("\\+|-|/|\\*")
其中\\的作用前面已经提到了
相关文章推荐
- ssh-keygen的使用方法(无密码访问)
- 放开Linux内核对用户进程可打开文件数和TCP连接的限制
- html基本小结
- linux 下如何通过ssh到其他机器然后执行命令?
- UIScrollView篇之基本说明
- 什么是JSON格式
- Codeforces Round #312 (Div. 2) E. A Simple Task
- 生成随机验证码
- 关于Spring中的context:property-placeholder 导入多个独立的配置文件
- SOA&RESTful软件架构
- 关于127.0.0.1与localhost
- Android开发数据库之LitePal用法
- IDO分享 | 如何在centos下安装OpenCMS
- IDO分享 | 如何在centos下安装OpenCMS
- 网页中meta标记
- Microsoft.AspNet.Identity 自定义使用现有的表—登录实现
- 众里寻她千百度,那人却在优衣库。
- CSS (一)
- hadoop 学习笔记(hadoop架构)
- battery-获取手机电量信息