java String.trim()方法详解
本文为原创文章 转载请注明出处。
废话不多说 直接附源代码如下:
public String trim() {
int len = value.length;
int st = 0;
char[] val = value; /* avoid getfield opcode */
while ((st < len) && (val[st] <= ' ')) {
st++;
}
while ((st < len) && (val[len - 1] <= ' ')) {
len--;
}
return ((st > 0) || (len < value.length)) ? substring(st, len) : this;
}
public String substring(int beginIndex, int endIndex) {
if (beginIndex < 0) {
throw new StringIndexOutOfBoundsException(beginIndex);
}
if (endIndex > value.length) {
throw new StringIndexOutOfBoundsException(endIndex);
}
int subLen = endIndex - beginIndex;
if (subLen < 0) {
throw new StringIndexOutOfBoundsException(subLen);
}
return ((beginIndex == 0) && (endIndex == value.length)) ? this
: new String(value, beginIndex, subLen);
}
注:st 寻找空格的开始位置
len 是结束位置
如果在String 对象的开头或结尾处有空格 则取子串 否则返回原对象。
测试代码
public class test2 {
public static void main(String[] args) {
String t1 = "aaaaa";
String t2 = " a aaaa";
String t3 = "aaaa a ";
String t4 = " aaaaa ";
System.out.println(t1.trim());
System.out.println(t2.trim());
System.out.println(t3.trim());
System.out.println(t4.trim());
System.out.println(t1.trim()==(t1.trim()));
System.out.println(t1.trim()==(t2.trim()));
System.out.println(t1.trim()==(t3.trim()));
System.out.println(t1.trim()==(t4.trim()));
}
}
测试结果
aaaaa
a aaaa
aaaa a
aaaaa
true
false
false
false