String类trim()实现
String类trim()方法主要实现了删除两端的空白字符串。
- 将字符串转为字符数组
- st代表数组左边的数组下标,len代表数组右边下标
- 第一个while循环是从左到右遍历数组的空字符
- 第二个while循环是从右到左遍历数组的空字符
- ?:的用法:”?“前面是判断,若为true则返回“:”前面的语句,若为false则返回”:“后面的语句
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;
}
总结:源码中的代码非常简洁,两个while循环判断出左边和右边的边界。循环中是<=,原因在于空格的ASCII码为32,0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车),所以还可以删除其它字符,如果不想删除可以重写trim()方法。