Java 字符串分割“|”与“.”Bug(切记)
来源:互联网 发布:网络象棋 编辑:程序博客网 时间:2024/05/19 20:20
1. 背景:
使用Java编程时对于字符串的分割常常会使用到“|”和“.”
目前更多的developer并没有查看源码的习惯,因此对java.lang.String.split(String)方法的理解,只是停留在知道是依据参数对原字符串进行分割,但并不了解分割的实现原理,因此会导致不会意识到这里产生的Bug。
2. 实例:
s.replaceAll(".", "/") will return a String in which every character has been replaced by a '/' character
s.split(".") always returns a zero length array of String
"ab|cd".replaceAll("|", "/") will return "/a/b/|/c/d/"
"ab|cd".split("|") will return array with six (!) elements: [, a, b, |, c, d]
3. 产生原理:
public String[] split(String regex) { return split(regex, 0);}上面是String类中split方法的源码,参数名为regex,看到这里大家应该了解到我们传进用来分割的参数实际上是一个正则表达式,而Java会使用正则来分割原有字符串。而 “|” 和 “.”是正则表达式的符号,即在正则中他们不是表达的字面本意,结果自然就不是预期想象的分割后的字符串数组了。
4.解决办法:
将 “|” 及 “.” 前面添加转意符号,即更改为 “\\|” 和 “\\.”。
0 0
- Java 字符串分割“|”与“.”Bug(切记)
- Java字符串分割与优化
- Java字符串分割(split)
- java 特殊字符串替换与分割
- java字符串与数字的分割
- 字符串string(分割与融合)
- 字符串分割与拼接
- java 学习笔记(二) 字符串分割
- Java字符串(String)分割方法
- Java字符串(String)分割方法
- java分割字符串
- Java字符串分割
- java 字符串分割
- Java分割字符串
- java 字符串分割
- java 分割字符串
- Java中的字符串分割
- JAVA字符串分割
- Codeforces 665C - Simple Strings
- Java语言中没有引用传递,只有值传递。到底对不对?
- Android自定义属性
- 四.流程控制-学习笔记
- 手机安全卫士第二天
- Java 字符串分割“|”与“.”Bug(切记)
- SoapUI-入门
- 几个简单的排序算法
- CF初体验---Round #348,B
- [BZOJ1060][ZJOI2007]时态同步(树形dp)
- cocos2d-x屏幕适配
- Android项目的目录结构
- DataMining(2)_Mining Frequent Patterns
- 蛤玮准备礼物