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

  我们经常使用public String[] split(String regex)方法来拆分一个有分隔符的字符串,但是由于参数regex是一个 regular-expression的匹配模式而不是一个简单的String,所以他对一些特殊的字符可能会出现你预想不到的结果,比如测试下面的代码:用竖线 | 分隔字符串,你将得不到预期的结果

  view plaincopy to clipboardprint?

  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]);

  }

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

  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(////);

String spilt时转义特殊字符【转】的更多相关文章

  1. (转)正则表达式:string.replaceAll()中的特殊字符($ \)与matcher.appendReplacement

    string.replaceAll中的特殊字符 string.replaceAll(String regex, String replacement)中的replacement参数即替换内容中含有特殊 ...

  2. 关于Java String 类型转换时null的问题(转)

    关于Java String 类型转换时null的问题 开发中经常遇到从集合类List.Map中取出数据转换为String的问题,这里如果处理不好,经常会遇到空指针异常java.lang.NullPoi ...

  3. c++ string写时复制

    string写时复制:将字符串str1赋值给str2后,除非str1的内容已经被改变,否则str2和str1共享内存.当str1被修改之后,stl才为str2开辟内存空间,并初始化. #include ...

  4. HTTP post get request 时遇到特殊字符 ! @ # $ % ^ & * ( )

    HTTP post get request 时遇到特殊字符 ! @ # $ % ^ & * ( ) 使用对应的编码替代 例如: curl ftp://username:pass@word@ex ...

  5. sqoop导入时删除string类型字段的特殊字符

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/sheismylife/article/details/29384357 假设你指定了\n为sqoop ...

  6. 使用split进行分割时遇到特殊字符的问题

    使用split分割时: String[] a="aa|bb|cc".split("|"); output: [a, a, |, b, b, |, c, c] 先 ...

  7. lua 字符串 正则表达式 转义 特殊字符

    string.gsub 函数有三个参数:目标串,模式串,替换串.基本作用是用来查找匹配模式的串,并将使用替换串其替换掉: s = string.gsub("Lua is good" ...

  8. 关于Redis-存Long取Integer类型转换错误的问题;String对象被转义的问题

    背景 最近遇到了两个Redis相关的问题,趁着清明假期,梳理整理. 1.存入Long类型对象,在代码中使用Long类型接收,结果报类型转换错误. 2.String对象的反序列化问题,直接在Redis服 ...

  9. gson转换对象为json字符串时对特殊字符编码的问题

    使用google的gson进行object和json的转换,如下: public static String object2json(Object obj) { Gson gson = new Gso ...

随机推荐

  1. ajax常用知识

     同源地址:任意两个地址中的协议,域名,端口相同,称为同源地址 同源策略:  是浏览器的一种基本安全策略                       不允许对非同源地址进行请求(ajax)       ...

  2. js中的变量提升和函数提升

    从上周开始,我所在的学习小组正式开始了angular的学习,angular是全面支持es6的,所以语法上和以前的angular有了很大的不同,比如变量声明时就抛弃了var,而选择了let和const: ...

  3. WinServer-IIS-请求筛选

    这个实在太多了,可以比较好的控制网站的访问 来自为知笔记(Wiz)

  4. Android在程序中浏览网页

    本文是自己学习所做笔记,欢迎转载.但请注明出处:http://blog.csdn.net/jesson20121020 有时须要在程序中浏览一些网页.当然了能够通过调用系统的浏览器来打开浏览.可是大多 ...

  5. 110_leetcode_Best Time to Buy and sell Stock II

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  6. selenium的报错信息:selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: Compound class names not permitted

    报错信息:selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: Compound class ...

  7. c++ STL unique , unique_copy函数

    一.unique函数 类属性算法unique的作用是从输入序列中"删除"全部相邻的反复元素. 该算法删除相邻的反复元素.然后又一次排列输入范围内的元素,而且返回一个迭代器(容器的长 ...

  8. dom 编程(html和xml)

    html dom与xml dom关系: 什么是 DOM? DOM 是 W3C(万维网联盟)的标准. DOM 定义了訪问 HTML 和 XML 文档的标准: "W3C 文档对象模型 (DOM) ...

  9. Hadoop实战:使用Combiner提高Map/Reduce程序效率

    好不easy算法搞定了.小数据測试也得到了非常好的结果,但是扔到进群上.挂上大数据就挂了.无休止的reduce不会结束了. .. .. .... .. ... .. ================= ...

  10. php+mysql时报错:Unknown column '' in 'field list'解决方案

    答案来源:http://jingyan.baidu.com/article/9f7e7ec05c5ad76f281554ab.html 很多人在用php+MySQL做网站往数据库插入数据时发现如下错误 ...