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的条件中字符的Unicode码小于等于空字符的Unicode码32(\U0020),就
表示空字符了,这怎么理解?
去掉字符串前后的" "
trim 是去除两端的空格,
先转成 char 数组 , 如果长度大于0 , 第一个字符是 空格 , st ++ ; (如果第一个字符非空 ,那么直接跳出当前的while) 然后继续判断下一个 ,依次直到 val[st] 不为' ' 时,跳至 下一个while
len 也同上 直到 val[len] 不为' ' 时, 截取 从 st - len 之间的值 , 返回;
去掉string两端空格
第一个while循环就是去掉前面的空格,只要有空格st的值就加1,直到遇到不为空字符的字符为止(即是跳到第二个while)它是从后往前
有就len--。直到遇到不为空字符的字符为止 就返回
若果st大于0(说明前面有空格)或者len小于value.length(说明后面有空格),那就返回substring(st,len)前面省略了this既是传过来的字符串
否则返回字符串本身