永发信息网

java trim()方法哪位高手给解释一下这段代码

答案:4  悬赏:0  手机版
解决时间 2021-03-02 02:31
  • 提问者网友:椧運幽默
  • 2021-03-01 16:51
public String trim() {
int len = count;
int st = 0;
int off = offset;
char[] val = value;

while ((st < len) && (val[off + st] <= ' ')) {
st++;
}
while ((st < len) && (val[off + len - 1] <= ' ')) {
len--;
}
return ((st > 0) || (len < count)) ? substring(st, len) : this;
}
最佳答案
  • 五星知识达人网友:西风乍起
  • 2021-03-01 17:42
public String trim() {
int len = count; // 有效字符(不是空格)结束位置
int st = 0; // 有效字符(不是空格)起始位置
int off = offset; // 字符数组起始位置,应该是0
char[] val = value; // 字符数组

while ((st < len) && (val[off + st] <= ' ')) { // 从起始位置开始遍历,获取起始连续空格的最后空格位置
st++; // st值发生变化,说明起始有空格,st就是起始需要截取的位置
}
while ((st < len) && (val[off + len - 1] <= ' ')) { // 从末尾位置开始遍历,获取末尾连续空格的第一个空格位置
len--; // len值发生变化,说明末尾有空格,len是末尾需要截取的位置
}
return ((st > 0) || (len < count)) ? substring(st, len) : this; // 判断是否有空格需要截取,有截取,没有返回原String
}
全部回答
  • 1楼网友:走死在岁月里
  • 2021-03-01 21:40
就是去除空格的方法
  • 2楼网友:英雄的欲望
  • 2021-03-01 20:14
消除字符串的俩端空白内容! 再看看别人怎么说的。
  • 3楼网友:duile
  • 2021-03-01 18:58
纯属自己语言,看不懂可以私聊 public String trim() { int len = count; //你可以理解为这个字符串变成char数组以后的长度 int st = 0; int off = offset; //当做是0 char[] val = value; //由这个字符串变成的字符数组 while ((st < len) && (val[off + st] <= ' ')) { //var[off+st]其实是拿到这个数组的首字符,由首字符和‘ ’的ascii码比较,如果<=就继续下一个字符比较,如果>了就停止比较;最后st会拿到第一个不是 ‘ ‘字符的下标 st++; } //下面这个逻辑和上面一样,其实拿到就是一个最后一个字符不是’ ‘的下标。 while ((st < len) && (val[off + len - 1] <= ' ')) { len--; } //最后返回的是截取这个字符串中下标从st开始到len结束的一个字符串。 return ((st > 0) || (len < count)) ? substring(st, len) : this; }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯