c++删除string开头的0_从String中移除空⽩字符的多种⽅式推荐阅读:
Alibaba顶级MySQL笔记,学会80%⾯试直接起飞
666!Alibaba⾸发“Java⾯试宝典”,跳槽⾯试稳了
字符串,是Java中最常⽤的⼀个数据类型了。我们在⽇常开发时候会经常使⽤字符串做很多的操作。⽐如字符串的拼接、截断、替换等。
这⼀篇⽂章,我们介绍⼀个⽐较常见⼜容易被忽略的⼀个操作,那就是移除字符串中的空格。
其实,在Java中从字符串中删除空格有很多不同的⽅法,如trim,replaceAll等。但是,在Java 11添加了⼀些新的功能,如strip、stripLeading、stripTrailing等。
⼤多数时候,我们只是使⽤trim⽅法来删除多余的空格。但是好像很多⼈并没有去思考过,是否有更好的⽅式呢?
当然,trim()在⼤多数情况下都⼯作得很好,但是Java中有许多不同的⽅法。每⼀种都有⾃⼰的优点和缺点。我们如何决定哪种⽅法最适合我们呢?
接下来我们将介绍⼏种⽅法,并对⽐下他们的区别和优缺点等。
在java中从字符串中删除空格的不同⽅法
⾸先,我们来看⼀下,想要从String中移除空格部分,有多少种⽅法,作者根据经验,总结了以下7种(JDK原⽣⾃带的⽅法,不包含第三⽅⼯具类库中的类似⽅法):
trim() : 删除字符串开头和结尾的空格。
strip() : 删除字符串开头和结尾的空格。
stripLeading() : 只删除字符串开头的空格
stripTrailing() : 只删除字符串的结尾的空格
replace() : ⽤新字符替换所有⽬标字符
replaceAll() : 将所有匹配的字符替换为新字符。此⽅法将正则表达式作为输⼊,以标识需要替换的⽬标⼦字符串
replaceFirst() : 仅将⽬标⼦字符串的第⼀次出现的字符替换为新的字符串
需要注意的最重要的⼀点是,在Java中String对象是不可变的,这意味着我们不能修改字符串,因此
以上所有的⽅法我们得到的都是⼀个新的字符串。
接下啦,我们分别针对以上这⼏个⽅法学习下⽤法,了解下其特性。
trim
trim()是Java开发⼈员最常⽤的删除字符串开头和结尾的空格⽅法。其⽤法也⽐较简单:
public class StringTest { public static void main(String[] args) { String stringWithSpace = " Hollis Is A Java Coder "; imTest(st 输出结果:
Before trim : ' Hollis Is A Java Coder 'After trim : 'Hollis Is A Java Coder'复制代码
如上,使⽤trim之后,原字符串中开头和结尾部分的空格内容都被移除掉了。
但是不知道⼤家有没有思考过,trim⽅法移除的空⽩内容都包含哪些东西?除了空格以外,还有其他的字符吗?
其实,trim移除的空⽩字符指的是指ASCII值⼩于或等于32的任何字符(' U+0020 '):
其中包含了空格、换⾏、退格等字符。
strip()
不知道⼤家有没有注意到,在Java 11的发⾏版中,添加了新的strip()⽅法来删除字符串中的前导和末尾空格。
已经有了⼀个trim⽅法,为什么还要新增⼀个strip呢?
这其实是是因为trim⽅法只能针对ASCII值⼩于等于32的字符进⾏移除,但是根据Unicode标准,除了ASCII中的字符以外,还是有很多其
他的空⽩字符的。
⽽且为了识别这些空格字符,从Java 1.5开始,还在Character类中添加了新的isWhitespace(int)⽅法。该⽅法使⽤unicode来标识空格
字符。你可以在jkorpela.fi/chars/space… 了解更多关于unicode空格字符的信息。
java replace方法
⽽在Java 11中新增的这个strip⽅法就是使⽤这个Character.isWhitespace(int)⽅法来判断是否为空⽩字符并删除它们的:
下⾯我们来看⼀个使⽤strip例⼦:
public class StringTest { public static void main(String args[]) { String stringWithSpace =' ' + " Hollis Is A Java Coder " + ' '; System.out.println("'"
我们在字符串前后都增加了⼀个特殊的字符 ,这个字符是不在ASCII中的,经过Character.isWhitespace判断他是⼀个空⽩字符。然后
使⽤strip进⾏处理,输出结果如下:
' ' is space : trueBefore strip : ' Hollis Is A Java Coder 'After strip : 'Hollis Is A Java Coder'
所以,Java 11 中的 strip ⽅法要⽐trim⽅法更加强⼤,他可以移除很多不在ASCII中的空⽩字符,判断⽅式就是通过
Character.isWhitespace⽅法。
trim 和 strip ⽅法的区别
上⾯我们介绍了两个都可以移除字符串开头和结尾的⽅法,分别是trim 和 strip,再来对⽐下他们的区别:
|trim|strip| |---|---| Java 1引⼊|Java 11引⼊ 使⽤ASCII|使⽤Unicode值 删除开头和结尾的空⽩字符|删除开头和结尾的空⽩字符 删除
ASCII值⼩于或等于' U+0020 '或' 32 '的字符|根据unicode删除所有空格字符
stripLeading() 和 stripTrailing()
stripLeading()和stripTrailing()⽅法也都是在Java 11中添加的。作⽤分别是删除字符串的开头的空格以及删除字符串的末尾的空格。
与strip⽅法类似,stripLeading、stripTrailing也使⽤Character.isWhitespace(int)来标识空⽩字符。⽤法也和strip类似:
public class StringTest { public static void main(String args[]) { String stringWithSpace =' ' + " Hollis Is A Java Coder " + ' '; System.out.println("'"输出结果:
' ' is space : trueBefore stripLeading : ' Hollis Is A Java Coder 'After stripLeading : 'Hollis Is A Java Coder 'Before stripTrailing : ' Hollis Is
replace
移除字符串中的空⽩字符,除了使⽤trim、strip以外,还有⼀个办法,那就是使⽤replace⽅法把其中的空⽩字符替换掉。
replace是从java 1.5中添加的,可以⽤指定的字符串替换每个⽬标⼦字符串。
此⽅法替换所有匹配的⽬标元素,使⽤⽅式如下:
public class StringTest { public static void main(String args[]) { String stringWithSpace =" Hollis Is A Java Coder "; placeTest
结果:
Before replace : ' Hollis Is A Java Coder 'After replace : 'HollisIsAJavaCoder'
可见,以上使⽤replace⽅法可以替换掉字符串中的所有空⽩字符。特别需要注意的是,replace⽅法和trim⽅法⼀样,只能替换掉ASCII中
的空⽩字符。
replaceAll
replaceAll是Java 1.4中添加的最强⼤的字符串操作⽅法之⼀。我们可以将这种⽅法⽤于许多⽬的。
使⽤replaceAll()⽅法,我们可以使⽤正则表达式来⽤来识别需要被替换的⽬标字符内容。使⽤正则表达式,就可以实现很多功能,如删除
所有空格,删除开头空格,删除结尾空格等等。
我们只需要⽤正确的替换参数创建正确的正则表达式。⼀些正则表达式的例⼦如下:
s+ 所有的空⽩字符^s+ 字符串开头的所有空⽩字符s+$ 字符串结尾的所有空⽩字符
注意,在java中要添加/我们必须使⽤转义字符,所以对于s+ 我们必须使⽤ s+
public class StringTest { public static void main(String args[]) { String stringWithSpace =" Hollis Is A Java Coder "; placeAllTe 结果:
Before replaceAll with ' ': ' Hollis Is A Java Coder 'After replaceAll with ' ': 'HollisIsAJavaCoder'Bef
ore replaceAll with 's+': ' Hollis Is A Java Code
正如我们所看到的,如果将replaceAll()与适当的正则表达式⼀起使⽤,它将是⾮常强⼤的⽅法。
replaceFirst
replaceFirst⽅法也是在java 1.4中添加的,它只将给定正则表达式的第⼀个匹配项替换为替换字符串。
如果您只需要替换第⼀次出现的情况,那么这个⽅法⾮常有⽤。例如,如果我们只需要删除前导空格,我们可以使⽤s+或^s+。
我们还可以通过使⽤s+$正则表达式使⽤此⽅法来删除末尾空格。因为这个表达式将只匹配⾏的最后⼀个空格。因此最后的空格被认为是这个⽅法的第⼀个匹配。
让我们举⼀个从字符串中删除前导和尾随空格的例⼦
public class StringTest { public static void main(String args[]) { String stringWithSpace =" Hollis Is A Java Coder "; placeFirstT 结果:
Before replaceFirst with ' ': ' Hollis Is A Java Coder 'After replaceFirst with ' ': ' Hollis Is A Java Coder 'Before replaceFirst with 's+': ' Hollis Is 总结
本⽂介绍了7种移除字符串中的空⽩字符的⽅法。
想要直接移除掉字符串开头的空⽩字符,可以使⽤stripLeading、replaceAll和replaceFirst
想要直接移除掉字符串末尾的空⽩字符,可以使⽤stripTrailing、replaceAll和replaceFirst
想要同时移除掉字符串开头和结尾的空⽩字符,可以使⽤strip、trim
想要移除掉字符串中的所有空⽩字符,可以使⽤replace和replaceAll
⽽Java 11种新增的strip、stripTrailing以及stripLeading⽅法,可以移除的字符要⽐其他⽅法多,他可以移除的空⽩字符不仅仅局限于ASCII中的字符,⽽是Unicode中的所有空⽩字符,具体判断⽅式可以使⽤Character.isWhitespace进⾏判断。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论