Java的String类有个方法叫trim(),说是去除字符串中的空格用的,其实这样的表述并不正确,正确的表述应该是去除字符串首尾的ASCII码小于等于空格的字符,对于字符串中的空格并没有效果。有点纠结,不过看一下trim()的实现代码就明白了。
[java]public String trim() {
int len = count;
int st = 0;
int off = offset; /* avoid getfield opcode */
char[] val = value; /* avoid getfield opcode */
while ((st < len) && (val[off + st] <= ‘ ‘)) {
st++;
}
while ((st < len) && (val[off + len - 1] <= ‘ ‘)) {
len–;
}
return ((st > 0) || (len < count)) ? substring(st, len) : this;
}[/java]
第一个while循环去除字符串前面的空格,后一个循环去除字符串后面的空格。
示例:
[java]public static void main(String[] args) {
String a=" \n www ooobj.com\n";
String b="www ooobj.com";
System.out.println(b.equals(a));
a = a.trim();
System.out.println(b.equals(a));
System.out.println(a);
}[/java]
输出:
[java]false
true
www ooobj.com[/java]
另外,trim方法并不对传入的字符串进行空值检查,有需要可以再写一个检查空值的:
[java]private static String trim(String src) {
if (src == null) {
return null;
}
return src.trim();
}[/java]