【Java】string split 分割误区
使用Java String.split() 分割时,分割字符为特殊字符需要特别注意。
要点:
1、首先JDK doc里已经说明,split的参数是regex,即正则表达式,而 +、*、| 等都是正则表达式中的特殊符号,所以都需要使用转义,即 “\+”、“\|”形式。
2、如果字符串中包含 "",首先这个字符串中的""需要转义,即为"\",用split时需要写成split("\\")。
示例代码:
import org.apache.commons.lang3.StringUtils; // StringUtils.split() String str1="\aaa\bbb\"; System.out.println(Arrays.toString(str1.split("\\"))); // [,aaa,bbb] System.out.println(Arrays.toString(StringUtils.split(str1, "\"))); // [aaa,bbb]
上述使用StringUtils.split()函数得到的结果显然更如人意,Java自带的split分割时,如果分隔符位于首位,则结果数组第一个会是空值,而尾部的分隔符却不会在数组最后添加一个空值。StringUtils包则解决了此问题,不会出现空值问题。
上一篇:
IDEA上Java项目控制台中文乱码