JDK源码之解读String最终类的trim()方法实现原理
把目标字符串str转换成字节数组,从左到有循环该字节数组,若为空,则继续循环,否则,跳出循环。
从右到做循环该字节数组,若为空,则长度减一,否则,结束循环。
获得字节数组起始非空位置和长度,组成新的字节数组,转换成新的字符串newstr. 源码如下:
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;
}
博主自己重写了下该方法:
/**
* rewrite trim
* @param str
* @return
*/
private static String trim(String str){
char val[]=str.toCharArray();
int len=val.length;
int st=0;
while((st<len)&&(val[st]<=' ')){
st++;
}
while((st<len)&&(val[len-1]<=' ')){
len--;
}
return ((st>0)||(len < val.length))?str.substring(st,len):str;
}
版权声明:本文为qq_17280849原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。