1、trim()方法不足之处
trim()
方法在Java早期版本就被引入。
它仅去除字符串两端的ASCII空格字符(即字符码为32的空格)以及字符码小于等于U+0020
的控制字符。
不识别并去除Unicode空白字符。支持Unicode的空白字符的判断应该使用isWhitespace(int)
。
也就是trim()
方法无法删除掉Unicode空白字符,但用Character.isWhitespace(c)
方法可以判断出来。
2、strip()方法
strip()
方法是在Java 11中引入的。它能去除字符串两端的所有Unicode空白字符,根据Character.isWhitespace
方法来识别空白字符。也就是strip()
能处理的空白字符不仅仅限于ASCII字符集,还包括了其他字符集中的空白字符,使得这个方法在国际化处理上更为有用。
public static void main(String[] args) {
String s = "\t abc \n";
System.out.println( "abc".equals(s.trim()));//true
System.out.println("abc".equals(s.trim()));//true
Character c = '\u2000';
String s1 = c + "abc" + c;
System.out.println(Character.isWhitespace(c));//true
System.out.println(s1.equals(s1.trim()));//true
System.out.println("abc".equals(s1.strip()));//true
}
注意:输出结果都是true
, Character c = '\u2000';
中'\u2000'就是Unicdoe空白字符。