【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包则解决了此问题,不会出现空值问题。
经验分享 程序员 微信小程序 职场和发展