今天在做项目的时候发现一个问题,当我需要将一个字符串 (例如:”abc|def|ghi|jkl”) 解析后放到数组中时,我们很自然地想到String的Split()方法,代码如下:
String str = "abc|def|ghi|jkl";
String[] strArr = str.split("|");
System.out.println("len: "+strArr.length);
...
当我将数组长度打印出来的时候,发现结果竟是整个字符串的长度+1.
在查阅了相关资料和同事的帮助下终于发现了问题的原因所在,从JDK文档中我们可以查到split()方法的参数是正则表达式,而这个“|”正是正则表达式中的逻辑运算符“或”,除了这个还有很多其他的特殊符号,比如匹配运算符,比如“*”、“+”、“?”等等,在我们的字符串中有这些字符的时候,我们split就要小心了,不是所有的字符都能顺利地split的,解决办法是将这个特殊符号转义,正确的代码如下:
String str = "abc|def|ghi|jkl";
String[] strArr = str.split("\\|");
System.out.println("len: "+strArr.length);
...
为什么要用两个饭斜杠去转义呢?详情请参考此处
本Blog文章除特别声明之外皆为原创文章,欢迎转载,转载请注明: 转载自JSSAY'S BLOG
本文链接地址: http://www.jssay.com/blog/index.php/2009/10/15/java%e4%b8%adstring%e7%9a%84split%e6%96%b9%e6%b3%95/