在使用String.split方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果。

我们看jdk doc中说明

public String[] split(String regex)

Splits this string around matches of the given regular expression.

参数regex是一个 regular-expression的匹配模式而不是一个简单的String,他对一些特殊的字符可能会出现你预想不到的结果,比如测试下面的代码:

用竖线 | 分隔字符串,你将得不到预期的结果

String[] aa = "aaa|bbb|ccc".split("|");

//String[] aa = "aaa|bbb|ccc".split("\\|"); 这样才能得到正确的结果

for (int i = 0 ; i

System.out.println("--"+aa[i]);

}

用竖 * 分隔字符串运行将抛出java.util.regex.PatternSyntaxException异常,用加号 + 也是如此。

String[] aa = "aaa*bbb*ccc".split("*");

//String[] aa = "aaa|bbb|ccc".split("\\*"); 这样才能得到正确的结果

for (int i = 0 ; i

System.out.println("--"+aa[i]);

}

显然,+ * 不是有效的模式匹配规则表达式,用"\\*" "\\+"转义后即可得到正确的结果。

"|" 分隔串时虽然能够执行,但是却不是预期的目的,"\\|"转义后即可得到正确的结果。

还有如果想在串中使用"\"字符,则也需要转义.首先要表达"aaaa\bbbb"这个串就应该用"aaaa\\bbbb",如果要分隔就应该这样才能得到正确结果:

String[] aa = "aaa\\bbb\\bccc".split("\\\\");

Java在使用时需要注意那些问题_java使用String.split方法时要注意的问题相关推荐

  1. Java String split方法性能分析

    近期笔者分析一段在线代码的性能时,发现Java String类中split()方法的性能和网上一些帖子的描述并不相同,是以记录澄清. Java String split方法到底有没有使用正则表达式? ...

  2. java String split 方法丢弃末尾的空白字符问题

    问题描述 在使用 split 方法时,末尾的空白字符会被丢弃,但是实际上这个行字符可能是一个文件的内容,没个字段内容是否为空都需要记录,此时 split的此无参数方法就不再适用了. 情景再现 Stri ...

  3. Java:使用split方法时忽略中英文的符号区别

    Java:使用split方法时忽略中英文的符号区别 split(",|,")

  4. java诡异的String.split()方法

    Reference https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String) 正文 ...

  5. java valueof的用法_Java中String.valueOf()方法的使用

    Java中String.valueOf()方法的使用 (2013-06-21 18:07:34) 标签: it Java中String.valueOf() 方法的使用 1. 由 基本数据型态转换成 S ...

  6. 服务器主板用360优化后崩溃,360极速浏览器使用时崩溃了怎么办-卡屏幕崩溃现象解决方法 - Iefans...

    360极速浏览器一款在保证安全和稳定的基础上可以让使用者进行极速阅读的浏览器,但有的时候会因为一些小问题在用户使用时会导致卡屏幕崩溃的现象出现,现在就和小编一起来瞅瞅这篇解决方案吧 360极速浏览器崩 ...

  7. yum使用时 could not resolve host 报错的解决方法

    [root@cloud test]# yum list 已加载插件:fastestmirror http://mirrors.163.com/centos/7/os/x86_64/repodata/r ...

  8. java中的equals拿什么鞋的_Java中==和equals方法

    Java程序中测试两个变量是否相等有两种方式:1.== :2.equals()方法 当使用==来判断两个变量是否相等时,如果两个变量是基本类型变量,且都是基本数值类型(不一定要求数据类型严格相同),则 ...

  9. java 反射调用set方法_java反射调用set方法时如果让参数做自动类型转换

    这段时间学习java的反射机制想实现一个功能:遍历一个Map,然后利用反射机制调用BO的set方法,完成BO属性的自动注入.这样设计的初衷是解决Excel数据导入问题中的Map数据填充BO这一过程. ...

最新文章

  1. Javascript中for循环
  2. JavaScript 私有成员
  3. sql server 关联left join条件on和where条件的区别
  4. 漫画:程序员和产品经理撕得真是太太太太厉害了
  5. 演讲(2)----十大范畴法
  6. 二维数组作为函数的实参,定义函数形参的方法
  7. nginx日志采集 mysql_shell + go + mysql nginx日志统计 (三) :数据的展示
  8. js控制layui radio button选中
  9. 水经注地图下载器注册机机器码过长_微图影像下载参数说明
  10. H3C下一代防火墙介绍及开局指导培训答疑汇总
  11. 新零售企业构建智慧营销体系
  12. 国产管理软件勒索病毒大爆发
  13. 对涉密计算机检查内容,保密工作检查内容主要有哪些
  14. 服务器显示初始化失败怎么回事,服务器初始化失败
  15. 密码学-密钥管理与分发
  16. 通过跟踪源码证明在Java中通过执行Start()方法创建线程
  17. HB100多普勒雷达+STM32L476VGTx测速系统的电路设计(滤波放大比较器)
  18. 工业相机QE-量子转换效率
  19. CPT,CPM,CPS
  20. 什么是数据产品,怎么设计一个好用的数据产品

热门文章

  1. Python3--爬取数据之911网站信息爬取
  2. 华为开源深度学习框架MindSpore背后的商业野心
  3. 中文转unicode,中文转bytes,unicode转bytes java实现
  4. Spring Enable annotation – writing a custom Enable annotation
  5. True Zero Downtime HAProxy Reloads--转载
  6. c之指针与数组(1)
  7. Sklearn(v3)——朴素贝叶斯(1)
  8. 【特征工程】特征分箱
  9. 【Python】Pandas基础:结构化数据处理
  10. 深度?广度?浅析技术人员的职业发展之路