java字符串删除空格_在Java中从字符串中删除空格的不同方法

java字符串删除空格

java字符串删除空格

字符串操作最常在编程时完成。 就像删除字符串文本中或字符串周围的空格一样。 这也称为“剥离”字符串中的空格。 因此,到目前为止,我们都知道在Java中从字符串中删除空格的不同方法,即trim,replaceAll。 但是,Java 11通过诸如strip,stripLeading和stripTrailing之类的方法对这些方法进行了一些新的添加。

在大多数情况下,我们只使用trim方法删除空格。 我们从不停止,认为是否有更好的方法来满足我们的需求? 当然,trim()在大多数情况下都能很好地工作,但是Java中有许多不同的方法。 每种都有自己的优点和缺点。 我们如何决定哪种方法最适合我们?

好吧,在本博客中,我们将详细介绍不同的方法。

在Java中从字符串中删除空格的不同方法

  1. trim() :从字符串中删除前导和尾随空格
  2. strip() :删除字符串开头和结尾的空格。 Strip方法支持Unicode字符集
  3. 修剪与剥离:修剪与剥离方法之间的差异
  4. stripLeading() :仅从字符串开头删除空格
  5. stripTrailing() :仅从字符串末尾删除空格
  6. replace() :用新字符替换所有目标字符
  7. replaceAll() :将所有匹配的字符替换为新字符。 此方法将正则表达式作为输入,以标识需要替换的目标子字符串
  8. replaceAll vs replace :replace和replaceAll方法之间的区别
  9. 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

快速阅读:

相关话题

翻译自: https://www.javacodegeeks.com/2020/08/different-ways-to-remove-spaces-from-string-in-java.html

java字符串删除空格

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值