10月9日
使用String.split方法时遇到的问题(转载)
使用String.split方法时遇到的问题

今天在使用String.split()方法时因为使用"|"作分割符,总是得不到结果。于是在网上Google了一下,终于找到了答案。

在使用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 <aa.length ; 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 <aa.length ; i++ ) {
      System.out.println("--"+aa[i]);
    }
显然,+ * 不是有效的模式匹配规则表达式,用"//*" "//+"转义后即可得到正确的结果。
"|" 分隔串时虽然能够执行,但是却不是预期的目的,"//|"转义后即可得到正确的结果。
还有如果想在串中使用"/"字符,则也需要转义.首先要表达"aaaa/bbbb"这个串就应该用"aaaa//bbbb",如果要分隔就应该这样才能得到正确结果:
String[] aa = "aaa//bbb//bccc".split(" ");

另在JDK API里找到此段说明,大意是为了防止正则表达式里的转义符与java语句里的"/"搞混,特用"//"作转义符。
Backslashes within string literals in Java source code are interpreted as required by the Java Language Specification as either Unicode escapes or other character escapes. It is therefore necessary to double backslashes in string literals that represent regular expressions to protect them from interpretation by the Java bytecode compiler. The string literal "/b", for example, matches a single backspace character when interpreted as a regular expression, while "//b" matches a word boundary. The string literal "/(hello/)" is illegal and leads to a compile-time error; in order to match the string (hello) the string literal "//(hello//)" must be used.

String.Split相关推荐

  1. Java String.split()用法小结

    2019独角兽企业重金招聘Python工程师标准>>> 在java.lang包中有String.split()方法,返回是一个数组 我在应用中用到一些,给大家总结一下,仅供大家参考: ...

  2. 注意String.Split的几个重载形式

    String.Split应该是经常用到的一个函数了,经常的有下面两种形式        public string[] Split(char[] separator, StringSplitOptio ...

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

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

  4. Java String split 使用详解、split 方法存在的一些坑

    String 方法的split 其实是很有学问的,他有很多的特殊情况.我们来梳理一下: 备注:limit 是 split(String regex, int limit ) 方法的第二个参数,&quo ...

  5. String.Split()函数

    转自:http://blog.csdn.net/zhvsby/article/details/3404721 C#中使用string.Split方法来分割字符串的注意事项: string.Split给 ...

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

    在使用String.split方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果. 我们看jdk doc中说明 public String[] split(String rege ...

  7. Java 分割字符串的方法String.split()底层原理

    文章目录 1.举例说明 2.split源码分析 3.API原解 4.regex参数API原解 5.limit参数介绍 6.结果的验证 7.此方法的使用 1.举例说明 (例子来自于博主:https:// ...

  8. java string()函数_转载java String.split()函数的用法详解

    转载java String.split()函数的用法详解 如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!在java.lang包中有String.split()方法的原型是: p ...

  9. String.split()方法你可能不知道的一面

    String.split()方法你可能不知道的一面 一.问题 java中String的split()是我们经常使用的方法,用来按照特定字符分割字符串,那么我们看以下一段代码: public void ...

  10. Java String.split() 特殊字符处理

    前言 jdk 1.8 split函数 注意,split函数的参数是正则表达式.split函数的定义为: /*** Splits this string around matches of the gi ...

最新文章

  1. 从技术到科学,中国AI向何处去?
  2. 【AJAX】DWR使用总结
  3. 【Echarts 3.x】填坑记
  4. 二进制包方式安装部署三节点k8s
  5. 【效率】几个免费的富文本编辑器,这不完胜付费?
  6. Win7+VMware10.0+CentOS 6.4+Tomcat,Win7访问不了CentOS6.4上的Tomcat
  7. spring aop 中@annotation()和自定义注解的使用
  8. kettle连接mysql教程_kettle 连接 mysql8
  9. 基于pytorch实现图像分类——理解自动求导、计算图、静态图、动态图、pytorch入门
  10. 在PhpStorm中管理GitHub代码仓库的使用方法
  11. Gitee搭建自己的图床
  12. 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第3节 综合案例_文件上传_2_综合案例_文件上传案例的客户端...
  13. Linux检测内存泄露的脚本
  14. 集成高德地图:com.autonavi.amap.mapcore.nativeNewInstance
  15. 使用LTT升级HP磁带机的固件程序
  16. web课程设计网页规划与设计 :DW旅游主题网页设计——凤阳智慧旅游官方-地方旅游网站模板html源码HTML+CSS+JavaScript
  17. Flink Web UI不能访问
  18. linux下安装jdk7
  19. 【注释说明】pcl库中OBB和AABB包围盒头文件pcl/features/moment_of_inertia_estimation.h,中文翻译注释说明,欢迎补充
  20. nginx 监听多个端口 80和81

热门文章

  1. 使用VirtualLab Fusion对闪耀光栅分析
  2. 【3数据可视化】基于vue的动态数据低代码可视化实现
  3. Mac基础操作教程:Mac电脑如何在录屏时录入声音?
  4. STM8S005 TIM1定时器PWM应用
  5. Excel 2013.Bible 免积分下载
  6. php gmssl,支持国密SM2/SM3/SM4/SM9/ZUC/SSL的密码工具箱GmSSL
  7. mac os 配置 dock 栏图标显示/隐藏
  8. pubmed影响因子插件_科研干货 | Scholarscope在新版PubMed中实现基于影响因子的文献筛选...
  9. openwrt编译用于mt7688的mplayer
  10. XCODE error: The linked library ‘libluajit.a‘ is missing one or more architectures required by thi