网站首页 > java教程 正文
我们在平时的项目开发中,为了去除字符串前后多余的空格,经常会使用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函数是真的不仅仅只会去除字符串开始和末尾的空格的。喜欢作者文章的可以关注作者,不定期更新哦。
猜你喜欢
- 2024-10-26 Java中字符串填充零和去零的常用方法
- 2024-10-26 java OOM内存泄漏原因及解决方法(java常见内存泄漏原因)
- 2024-10-26 高级Java开发 面试必备的JVM知识点(一)
- 2024-10-26 解决ServletException: java.lang.NoSuchMethodError
- 2024-10-26 干货:日常Java报错整理(java的错误异常怎么处理)
- 2024-10-26 SpringBoot执行jar报错java.lang.OutOfMemoryError_指定内存大小
- 2024-10-26 Springboot2.0学习6 使用配置文件
- 2024-10-26 Java类型之间的转换(java类型之间的转换是什么)
- 2024-10-26 mybatis中报出java.lang.UnsupportedOperationException错误
- 2024-10-26 JavaEE 项目常见错误汇总(进一步补充)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)