String.split() 与 StringUtils.delimitedListToStringArra() 在处理字符串分割上的不同
特殊字符
String str = "a.b.c";
// String分隔方式
String[] arr1 = str.split(".");
System.out.println(Arrays.toString(arr1)); // 结果[]
// StringUtils分隔方式
String[] arr2 = StringUtils.delimitedListToStringArray(str, ".");
System.out.println(Arrays.toString(arr2)); // 结果[a,b,c]
字符为null
String str = null;
// String分隔方式
String[] arr1 = str.split(",");
System.out.println(Arrays.toString(arr1)); // 结果空指针异常 java.lang.NullPointerException: null
// StringUtils分隔方式
String[] arr2 = StringUtils.delimitedListToStringArray(str, ",");
System.out.println(Arrays.toString(arr2)); // 结果[]
总结
-
如果分隔符为特殊字符(比如 “.”),传统的字符串分割方法
String.split()
会失效,需要使用转义符"\\."
才能正常分割。但是使用StringUtils.delimitedListToStringArray()
方法则不需要额外转义,它会自动帮你转义并分割成字符数组。 -
如果分割的字符串为
null
时,传统的字符串分割方法String.split()
会抛出异常。但是StringUtils.delimitedListToStringArray()
方法会判断字符串是否为null
,如果是则返回一个空数组,避免了程序异常。