字符串,是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 "; StringTest.trimTest(stringWithSpace); } private static void trimTest(String stringWithSpace){ System.out.println("Before trim : \'" + stringWithSpace + "\'"); String stringAfterTrim = stringWithSpace.trim(); System.out.println("After trim : \'" + stringAfterTrim + "\'"); }}复制代码
输出结果:
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()方法来删除字符串中的前导和末