在Java中,我们经常会遇到通过某个字符切割字符串场景,此时就会用到split(String regex)方法。在此方法中,regex是以正则表达式的方式进行编译的,因此如果regex字符串中有某些特定的字符串,就必需要进行转义。
需要进行转义的字符有12个:’|’、’.’、’+’、’*’、’^’、’?’、’[’、’\’、’{’、’(’、’)’、’$’。
如果感觉容易忘或者记不住,可以直接写个工具类,之后再使用split方法时,只需要调用工具类处理就行了。
public class MorliaEscapeUtil {
private static final char[] SPECIAL_CHARS = new char[] {'|','.','+','*','^','?','[','\\','{','(',')','$'};
public static String escapeSplitString(String oldString) {
if(MorliaStringUtils.isBlank(oldString)) {
return oldString;
}
StringBuffer sb = new StringBuffer();
char[] args = oldString.toCharArray();
for(char c1 : args) {
for(char c2 : SPECIAL_CHARS) {
if(c1 == c2) {
sb.append("\\");
break;
}
}
sb.append(c1);
}
return oldString = sb.toString();
}
}
此时调用split方法:
String s1 = "12.34";
System.out.println(Arrays.asList(s1.split(MorliaEscapeUtil.escapeSplitString("."))));