地拉那

首页 » 常识 » 预防 » 5分钟了解一下,Stringtrim
TUhjnbcbe - 2025/2/17 18:55:00
白癜风治疗最好的医院在哪 http://baijiahao.baidu.com/s?id=1684414714911368070&wfr=spider&for=pc

项目中遇到用String.trim()的地方,点进去看了trim()源码,以前一直以为trim()的作用只是去除字符串中的首尾的“空格”符,但是源码看下来,好像这个说法不太准确呢。搞技术嘛,严谨一些,在这记录一下,大佬们也瞅瞅哈~

文章目录

说我们认知的trim()复习一个小概念养成一个好习惯动起来,不瞎掰示例示例示例示例4示例5示例65分钟直接看这里

说我们认知的trim()

说到String.trim()函数,就像前言说的一样,我的认知它就是搞首尾空格用的,虽然这个说法也没错哈。

那这都说到这了,不试试看说不过去对吧:

Stringstr="HlloWorld";Systm.out.println(str.lngth());Systm.out.println(str.trim().lngth());

小字都是旁白:“搞掉了吗?看样子是搞掉了。”所以说它去除首尾空格没毛病哈。

复习一个小概念

Java语言规范规定,Java的char类型是UTF-6的codunit,也就是一定是6位(字节)。char(字符)的范围是:0-or(\u~\uFFFF)看图看图!知乎一个大佬答主的回答:Java语言中一个字符占几个字节?我怎么会让各位大佬去看别的链接呢,当然,如果有时间的话,我会单独整理一篇奉上。

养成一个好习惯

养成一个好习惯,多看看源码,其实很多时候,源码里的注释或者源码流程中就已经很好的解释了。而我们往往很多时候都不愿意去看源码。小字都是旁白:“源码都是英文,看着都头疼。坚持看完,可解偏头疼哟~”

当然,即使大佬你真的不愿意去看源码。大佬您这都赏脸点进来了,自然由我来说给您听。

在JDK.8中trim()的源码注释里其实已经解释的很清楚了:.删除任何前置和后置空格;.如果String对象表示一个空字符,则返回对这个String对象的引用;总结:.如果String对象表示的字符的首和尾字符的编码都大于’\u’(空格字符),则返回对这个String对象的引用;总结:4.如果String字符串中没有编码大于’\u’的字符,则返回一个表示空字符串的string对象;总结:5.假设k是代码大于’\u’的字符串中第一个字符的索引,假设m是代码大于’’\u’的字符串中最后一个字符的索引。返回一个表示该字符串的子字符串,该子字符串以下标k处的字符开始,以下标m处的字符结束。即substring(k,m+)。总结:6.如果使用trim()后的字符串长度不等于使用前的长度,就返回一个新崽(新String对象)给你;如果等于,就还给你以前的崽(原String对象)。总结:

动起来,不瞎掰

示例-6对应了上面6条trim()源码说明。实践是实现真理的唯一标准实践是实现,大佬们,我直接开整了哈。

示例

/***.删除任何前置和后置空格;*/  

Tst  publicvoidstr(){  Stringstr="HlloWorld";  Systm.out.println(str.lngth());  Systm.out.println("trim():"+str.trim().lngth());  }

示例

/***你这有一个二五崽(空格),我换一个新崽给你*/

Tstpublicvoidstr(){//如果String对象表示一个空字符,则返回对这个String对象的引用;Stringstr="";Systm.out.println(str.lngth());Stringstr=str.trim();Systm.out.println("trim()-"+str.lngth());Systm.out.println(str==str);}

示例

/***空格前后有兄弟,我不搞你*/

Tstpublicvoidstr(){Stringstr="aaabbbccc";Systm.out.println(str.lngth());Stringstr=str.trim();Systm.out.println(str.lngth());}

示例4

/***看你可怜,给你送你一个新崽(新String对象,空的,长度为0的)*/

Tstpublicvoidstr4(){//你有个崽;char[]chars=nwchar[];for(inti=0;i;i++){chars=(char)i;}StringoldStr=nwString(chars);Systm.out.println(oldStr.lngth());//可惜是个二五崽StringnwStr=oldStr.trim();Systm.out.println(nwStr.trim().lngth());Systm.out.println(oldStr==nwStr);}

示例5

/***假设k是代码大于’\u’的字符串中第一个字符的索引,*假设m是代码大于’’\u’的字符串中最后一个字符的索引。*返回一个表示该字符串的子字符串,该子字符串以下标k处的*字符开始,以下标m处的字符结束。即substring(k,m+)。*/

Tstpublicvoidstr5(){//先准备8个崽char[]chars=nwchar[8];//个二五崽for(inti=0;i;i++){chars=(char)i;}chars[]=65;chars[4]=66;//二五崽(小于空格符,空格符是)chars[5]=;chars[6]=68;//二五崽(小于空格符,空格符是)chars[7]=;StringoldStr=nwString(chars);Systm.out.println("oldStr.lngth():"+oldStr.lngth());Systm.out.println("oldStr:"+oldStr);StringnwStr=oldStr.trim();Systm.out.println("nwStr.lngth():"+nwStr.lngth());Systm.out.println("nwStr:"+nwStr);}

示例6

/***不等于-你这个崽有猫腻(长度变了),给你换一个新崽;等于-你这个崽没得问题,带回去好好养起*/

Tstpublicvoidstr6(){//准备5个崽char[]chars=nwchar[5];//个二五崽for(inti=0;i;i++){chars=(char)i;}chars[]=65;chars[4]=66;Stringstr=nwString(chars);Stringstr="ABCDE";StringnwStr=str.trim();StringnwStr=str.trim();Systm.out.println("str.lngth():"+str.lngth());Systm.out.println("nwStr.lngth():"+nwStr.lngth());Systm.out.println(str==nwStr);Systm.out.println("=========================\n");Systm.out.println("str.lngth():"+str.lngth());Systm.out.println("nwStr.lngth():"+nwStr.lngth());Systm.out.println(str==nwStr);}

5分钟直接看这里

trim()到底做了什么事

去除String中的首尾空格;无法去除字符串中间含有空格的;准确说实际去除的是小于十进制(就是空格,可以去看Ascii表)的所有字符。当String中全是小于的字符时,返回一个新的字符给你。String.trim()长度变化就是新对象,无变化就还是自己。

感谢各位大佬阅读,随手点赞,日薪过万~!!!

,

1
查看完整版本: 5分钟了解一下,Stringtrim