java字符串删除空格
字符串操作最常在编程时完成。 就像删除字符串文本中或字符串周围的空格一样。 这也称为“剥离”字符串中的空格。 因此,到目前为止,我们都知道在Java中从字符串中删除空格的不同方法,即trim,replaceAll。 但是,Java 11通过诸如strip,stripLeading和stripTrailing之类的方法对这些方法进行了一些新的添加。
在大多数情况下,我们只使用trim方法删除空格。 我们从不停止,认为是否有更好的方法来满足我们的需求? 当然,trim()在大多数情况下都能很好地工作,但是Java中有许多不同的方法。 每种都有自己的优点和缺点。 我们如何决定哪种方法最适合我们?
好吧,在本博客中,我们将详细介绍不同的方法。
在Java中从字符串中删除空格的不同方法
- trim() :从字符串中删除前导和尾随空格
- strip() :删除字符串开头和结尾的空格。 Strip方法支持Unicode字符集
- 修剪与剥离:修剪与剥离方法之间的差异
- stripLeading() :仅从字符串开头删除空格
- stripTrailing() :仅从字符串末尾删除空格
- replace() :用新字符替换所有目标字符
- replaceAll() :将所有匹配的字符替换为新字符。 此方法将正则表达式作为输入,以标识需要替换的目标子字符串
- replaceAll vs replace :replace和replaceAll方法之间的区别
- replaceFirst() :仅使用新替换字符串替换第一次出现的目标子字符串
需要注意的最重要一点是,在Java中,字符串对象是不可变的。 这意味着我们无法修改字符串,因此所有方法都将通过所有转换返回新字符串。
Java中的trim()方法
trim()是Java开发人员最常用的删除前导和尾随空格的方法。 对于修剪方法,空格字符是指ASCII值小于或等于32('U + 0020')的任何字符。
删除空间的修剪方法示例:
public class StringTrimTest {
public static void main(String[] args) {
String string = " String with space " ;
System.out.println( "Before trim: \"" + string + "\"" );
System.out.println( "After trim: \"" + string.trim() + "\"" );
}
}
输出:
Before trim: " String with space "
After trim: "String with space"
strip()方法Java 11
在Java 11发行版中,添加了新的strip()方法以从String中删除前导和尾随空格。
添加此方法的原因是,根据Unicode标准,存在各种空格字符,其ASCII值大于32('U + 0020')。 例如:8193(U + 2001)。
为了识别这些空格字符,Java 1.5在Character类中添加了新方法isWhitespace(int)。 此方法使用unicode识别空格字符。 您可以在此处阅读有关Unicode空格字符的更多信息。
strip方法使用此Character.isWhitespace(int)方法覆盖范围广泛的空白字符并将其删除。
strip()的示例:
public class StringStripTest {
public static void main(String[] args) {
String string = " String with space " ;
System.out.println( "Before strip: \"" + string+ "\"" );
System.out.println( "After strip: \"" + string.strip()+ "\"" );
}
}
输出:
Before strip: " String with space "
After strip: "String with space"
Java中trim和strip方法之间的区别
修剪() | 跳闸() |
---|---|
从Java 1 | 从Java 11 |
使用代码点(ASCII)值 | 使用Unicode值 |
删除前导和尾随字符(空格) | 删除前导和尾随字符(空格) |
删除ASCII值小于或等于'U + 0020'或'32'的字符 | 根据Unicode删除所有空格字符 |
让我们看一下示例,我们将使用大于32('U + 0020')unicode的空白字符。
从Java 1
输出:
从Java 1
在上面的示例中,我们可以看到trim方法无法删除由'\ u2001'Unicode字符添加的空格字符。
注意:如果您在Windows计算机上运行,则由于限制了unicode设置,您可能看不到类似的输出。 您可以使用在线编译器运行程序。 一些在线编译器链接如下,Java-8: https : //www.jdoodle.com/online-java-compiler/Java-11: https : //www.tutorialspoint.com/compile_java_online.php
stripLeading()方法Java 11
Java 11中添加了stripLeading()方法,可从String中删除所有前导空格。
与剥离方法类似,stripLeading也使用Character.isWhitespace(int)识别空白。
从Java 1
输出:
从Java 1
stripTrailing()方法Java 11
Java 11中增加了stripTrailing()方法,可从String中删除所有结尾空格。
与剥离方法类似,stripTrailing也使用Character.isWhitespace(int)识别空白。
从Java 1
输出:
从Java 1
替换(CharSequence目标,CharSequence替换):
从Java 1.5中添加,此方法用于将每个目标子字符串替换为指定的替换字符串。
此方法替换所有匹配的目标元素。
注意: java字符串类中提供了另一种方法replace(char oldChar,char newChar)。 唯一的区别是此方法将单个字符用作目标和替换。 我们不能使用此方法来删除空间,因为我们不能使用空字符作为替换。
从字符串中删除所有空格的示例
从Java 1
输出:
从Java 1
replaceAll(字符串正则表达式,字符串替换)
在Java 1.4中添加了,这是最强大的字符串处理方法之一。 我们可以将这种方法用于许多目的。
使用replaceAll()方法,我们可以使用给定的替换字符串替换每个匹配的正则表达式子字符串。 例如,删除所有空格,删除前导空格,删除尾随空格等。
我们只需要创建带有正确替换参数的正确正则表达式即可。 一些正则表达式示例如下:
\ s + | 找到所有空间 |
^ \ s + | 在行首查找所有空格 |
\ s + $ | 查找行尾的所有空格 |
替换字符串中的空格的示例,
注意:在Java中添加'/',我们必须使用转义字符,因此对于“ \ s +”,我们必须使用“ \\ s +”
从Java 1
输出:
从Java 1
如我们所见,如果我们将其与正确的正则表达式一起使用,则replaceAll()是非常强大的方法。
replaceAll和replace方法之间的区别
替换所有() | 更换() |
---|---|
从Java 1.4开始 | 从Java 1.5开始 |
接受用于目标识别的正则表达式 | 接受用于目标识别的字符串 |
用于修复或动态字符串替换 | 用于修复字符串替换 |
删除ASCII值小于或等于'U + 0020'或'32'的字符 | 根据Unicode删除所有空格字符 |
replaceFirst(字符串正则表达式,字符串替换)
在Java 1.4中添加了replaceFirst方法,只用替换字符串替换给定正则表达式的第一个匹配项。
如果您只需要替换一个第一次出现的位置,则此方法非常有用。 例如,如果我们只需要删除前导空格,则可以使用“ \\ s +”或“ ^ \\ s +”。
我们还可以使用此方法通过使用“ \\ s + $”正则表达式删除尾随空格。 因为此表达式将仅匹配行中的最后空格。 因此,最后一个空格被视为此方法的第一个匹配项。
让我们以从字符串中删除开头和结尾空格为例
从Java 1
输出量
从Java 1
快速阅读:
- 有多种方法可以从Java中的字符串中删除空格
- trim()是用于删除字符串中空格的最常用方法
- trim方法不支持unicode,并使用ascii值标识空格字符
- 从Java 11开始,添加了用于删除空格的新方法“ strip() ”
- 方法条是unicode感知的,尤其在多语言情况下,应使用它删除空格
- 从Java 11开始,对诸如stripLeading()和stripTrailing()之类的方法进行了改进,以删除前导和尾随空格。
- 为了更好地控制空间的移除,我们可以使用replaceAll() , replace() , replaceFirst()
相关话题
翻译自: https://www.javacodegeeks.com/2020/08/different-ways-to-remove-spaces-from-string-in-java.html
java字符串删除空格