关于Spring.split()踩坑

关于Spring.split()踩坑

public static void main(String[] args) {
		String selectedApprover ="JDXT_ouyangG|T欧阳小枝G|T18288883333";
		
		System.out.println(Arrays.toString(selectedApprover.split("G|T")));		
}

运行结果为:
[JDX, _ouyang, |, 欧阳小枝, |, 18288883333]

分析原因:
最初出现是在生成环境上,非常奇怪,百思不得其解,难道是按照“G”,“|”,“T”;三个来分割了?
验证结果:

public static void main(String[] args) {
		String selectedApprover ="JDXT_ouGyangGxiaoTzhiG|T欧阳小枝G|T18288883333";
		
		System.out.println(Arrays.toString(selectedApprover.split("G|T")));		
}

[JDX, _ou, yang, xiao, zhi, |, 欧阳小枝, |, 18288883333]
一看这个结果,果然是!按照字母来说,一般不会有问题,那有问题的只可能是是“|”,猜测是不是按照了正则,那么转义下看看

public static void main(String[] args) {
		String selectedApprover ="JDXT_ouGyangGxiaoTzhiG|T欧阳小枝G|T18288883333";
		
		System.out.println(Arrays.toString(selectedApprover.split("G|T")));		
}

[JDXT_ouGyangGxiaoTzhi, 欧阳小枝, 18288883333]
预期结果,没有问题,最后在Javadoc里找到了这个方法的说明
在这里插入图片描述

因此,特殊字符慎用,附带百度的部分内容:

String.split方法(以及其它类似的需要使用正则表达式的场合)
常见的需要回避“找抽”的字符有: , \ | ^ * + ? ( ) { } [ ] 等等
如果实在想用的话,在split之类需要正则表达式的地方,必须采用转义:
\\ = 转义后的 \ (可用在split中) (这个最无耻)
\. = 转义后的 . (可用在split中)
\, = 转义后的 , (可用在split中)
\| = 转义后的 | (可用在split中)
\^ = 转义后的 ^ (可用在split中)
\* = 转义后的 * (可用在split中)

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值