String类下split使用注意

今天开发,遇到了一个比较意外的问题。

1、问题描述:

       String.split(”.”);//以点作为分隔符

      结果得到的数组引用时,老报下标越界错误,后来测试也发现长度就是为零。

2、问题分析:

     开始时,怀疑此种分隔符是一种特殊的字符,莫非是要转义。于是加了两个斜杠,即:String.split(”//.”),测试通过。

   3、总结如下:

    1)、是点和|作为分隔符,出现此种错误,因为在在split(表达式)中,表达式其实是一个正则表达式,.和|是一种有特殊含义的字符,如果要使用此种字符作为分隔符,要使用转义字符加以转义方可得到正确结果。

   2)如果想要使用多个分隔符,可以使用|分隔开,比如使用 @和?作为分隔符,即为String.split(”@|?);

    3)使用String.split(””)时,往往容易忽略的一个地方就是分割的字符数组中,示例:“a/b/c”.split(”/”)的长度不是6,而是3,因为分割后,java中会从后面开始检查所得的数组,把空的去掉,返回非空的3个数组。


例:

System.out.println("abcd0@|#asdf1@|#kkkw22@|#".split("@//|#")[1]);

输入为asdf1   , 注意split里面“//|”转意

 

符号“.”,“|”,“$”是正则表达式特殊符号,要作转义,包括还很多,不一一举例!使用时注意!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值