大家好,欢迎来到IT知识分享网。
我们在平时的项目开发中,为了去除字符串前后多余的空格,经常会使用java.lang.String#trim函数对字符串进行处理,可是你知道吗?trim函数不仅仅会去除空格,还会去除其他的字符,那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; }
以上是java.lang.String#trim函数的实现源代码,我们可以看到,代码通过判断字符ASCII码值是否小于空格字符的ASCII码值来决定是否要去除该字符。依次对最前面连续的字符和最后面连续的字符进行判断,直到遇到需要保留的字符时才停止,则最终的st和len值即为返回结果的字符串索引起始位和长度。即假设存在字符串” small apple “,则经过trim函数处理后,返回”small apple”,不管是前面的单个空格,还是末尾的连续空格都会被去除。
但是我们为什么说trim函数不仅仅会去除空格呢,原因就在于ASCII码值小于字符空格的字符不仅仅只有空格这个一个字符,以下是ASCII码表,我们可以看到ASCII码值小于32(空格的ASCII码值)的字符还有31个。如下图所示
如果这些字符单个或连续出现在字符串的起始位置和末尾位置,那么java.lang.String#trim函数都是可以去除这些字符的。所以trim函数是真的不仅仅只会去除字符串开始和末尾的空格的。喜欢作者文章的可以关注作者,不定期更新哦。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/91712.html