zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

JAVA方法 字符串 删除 不同 空格
2023-09-27 14:25:57 时间

前言

技术不进则退 学无止境。

今天 我们来聊一下 字符串是如何剔除掉空格的。因为在很多时候 会用到这个功能。

字符串操作在编程时是最普通的操作。其中一个比较频繁的操作就是删除字符串文本中或字符串周围的空格。Jdk11 之前 我们都知道在Java中从字符串中删除空格的不同方法 即trim replaceAll。但是 Java 11通过诸如strip stripLeading和stripTrailing之类的方法对这些方法进行了一些新的添加。

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

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

总结了下 大概分为以下的方法

trim 从字符串中删除前导和尾随空格
strip 删除字符串开头和结尾的空格。Strip方法支持Unicode字符集
trim vs  strip trim与strip方法之间的差异
stripLeading 仅从字符串开头删除空格
stripTrailing 仅从字符串末尾删除空格
replace 用新字符替换所有目标字符
replaceAll 将所有匹配的字符替换为新字符。此方法将正则表达式作为输入 以标识需要替换的目标子字符串
replaceAll vs replace replace和replaceAll方法之间的区别
replaceFirst 仅使用新替换字符串替换第一次出现的目标子字符串

需要注意的最重要一点是 在Java中 字符串对象是不可变的。这意味着我们无法修改字符串 因此所有方法都将通过所有转换返回新字符串。

Java中的trim 方法

trim()是用来从字符串中提出前后空格最常用的操作方法。方法能够操作ASCII 值小于等于32 (‘U 0020’)的字符

public class StringTrimTest {

 public static void main(String[] args) {

 String string String with space 

 System.out.println( 格式化前: \ string \ 

 System.out.println( 格式化后: \ string.trim() \ 

}

执行程序 输出结果

格式化前: String with space 

格式化后: String with space 
jdk11 Java中的strip 方法

在Java 11发行版中 添加了新的strip 方法 以从String中删除前和后空格。

添加此方法的原因是 根据Unicode标准 存在各种空格字符 其ASCII值大于32 U 0020 。例如 8193 U 2001 。

为了识别这些空格字符 新方法是Java 1.5在Character类中添加了Whitespace int 。此方法使用unicode识别空格字符。您可以在此处阅读有关Unicode空格字符的更多信息。

strip使用此Character.is Whitespace int 方法覆盖范围广泛的空白字符并将其删除。

public class StringStripTest {

 public static void main(String[] args) {

 String string String with space 

 System.out.println( 格式化前: \ string \ 

 System.out.println( 格式化后: \ string.strip() \ 

}

执行程序 输出结果

格式化前: String with space 

格式化后: String with space 
strip vs trimtrim()strip()自 Java 1自 Java 11使用(ASCII) 值使用Unicode 值移除首尾空格移除首尾空格移除ASCII码小于等于‘U 0020’ 或’32’空格字符移除所有满足unicode的空格字符

让我们看一下示例 我们将使用大于32 U 0020 unicode的空白字符。

public class StringTrimVsStripTest {

 public static void main(String[] args) {

 String string \u2001 String with space \u2001 

 System.out.println( 格式化前: \ string \ 

 System.out.println( trim 格式化后: \ string.trim() \ 

 System.out.println( strip 格式化后: \ string.strip() \ 

}

执行程序 输出结果

格式化前: String with space 

trim 格式化后: String with space 

strip 格式化后: String with space 

在上面的示例中 我们可以看到trim方法无法删除 \ u2001 unicode字符添加的空格字符。

注意 如果您在Windows计算机上运行 由于设置了有限的unicode 您可能看不到类似的输出。

Jdk11 Java中的stripLeading ( ) 方法

Java 11中添加了strip Leading 方法 以删除字符串中的所有前缀空格。

与strip方法类似 Strip Leading也使用Character.is Whitespace int 来识别空白。

public class StringStripLeadingTest {

 public static void main(String[] args) {

 String string String with space 

 System.out.println( 格式化前: \ string \ 

 System.out.println( 格式化后: \ string.stripLeading() \ 

}

执行程序 输出结果

格式化前: String with space 

格式化后: String with space 
Jdk11 Java中的stripTrailing() 方法

strip Trailing 方法已在Java 11中添加 从字符串中删除了所有后缀空格。

与strip方法类似 Strip Trailing也使用Character.is Whitespace int 来识别空白。

public class StringStripTrailingTest {

 public static void main(String[] args) {

 String string String with space 

 System.out.println( 格式化前: \ string \ 

 System.out.println( 格式化后: \ string.stripTrailing() \ 

}

执行程序 输出结果

格式化前: String with space 

格式化后: String with space 
replace(CharSequence target, CharSequence replacement):

从Java 1.5中添加 此方法用于将每个目标子字符串替换为指定的替换字符串。

此方法替换所有匹配的目标元素。

注意 java字符串类中提供了另一种方法replace char旧的char char新的char 。唯一的区别是此方法将单个字符用作目标和替换。我们不能使用此方法来删除空间 因为我们不能使用空字符作为替换。

public class StringReplaceTest {

 public static void main(String[] args) {

 String string String with space 

 System.out.println( 格式化前: \ string \ 

 System.out.println( 格式化后: \ string.replace( , ) \ 

}

执行程序 输出结果

格式化前: String with space 

格式化后: Stringwithspace 
replaceAll (String regex, String replacement)

在Java 1.4中添加 这是最强大的字符串处理方法之一。我们可以将这种方法用于许多目的。

使用replace All 方法 我们可以使用给定的替换字符串替换每个匹配的正则表达式子字符串。例如 删除所有空格 删除前导空格 删除尾随空格等等。

我们只需要创建带有正确替换参数的正确正则表达式即可。一些正则表达式示例如下

\s 匹配所有的空格^\s 匹配所有开始的空格\s $匹配所有结束的空格替换字符串中的空格的示例

注意 在Java中添加“ /” 我们必须使用转义符 因此对于“ \ s ” 我们必须使用“ \ s ”

public class StringReplaceAllTest {

 public static void main(String[] args) {

 String string String with space 

 System.out.println( replaceAll执行前: \ string \ 

 System.out.println( 替换所有的空格: \ string.replaceAll( , ) \ 

 System.out.println( 按正则表达式替换所有的空格: \ string.replaceAll( \\s , ) \ 

 System.out.println( 按正则表达式替换头的空格: \ string.replaceAll( ^\\s , ) \ 

 System.out.println( 按正则表达式替换尾的空格: \ string.replaceAll( \\s $ , ) \ 

}

执行程序 输出结果

replaceAll执行前: String with space 

替换所有的空格: Stringwithspace 

按正则表达式替换所有的空格: Stringwithspace 

按正则表达式替换头的空格: String with space 

按正则表达式替换尾的空格: String with space 

如我们所见 如果我们将其与正确的正则表达式一起使用 则replaceAll 替换功能非常强大。

replaceAll vs replacereplaceAll()replace()自 Java 1.4自Java 1.5接受正则表达式为目标符接受字符串为目标符能够进行动态字符串替换能够进行字符串替换移除ASCII码小于等于‘U 0020’ 或’32’空格字符移除所有满足unicode的空格字符replaceFirst(String regex, String replacement)

Java 1.4中添加了 replaceFirst 方法 仅将给定正则表达式的第一个匹配替换为替换字符串。

如果您只需要替换一个第一次出现的位置 则此方法非常有用。例如 如果我们只需要删除前导空格 则可以使用“ \ s ”或“ ^ \ s ”。

我们还可以使用此方法通过使用“ \ s $”正则表达式删除尾随空格。因为此表达式将仅匹配行中的最后空格。因此 最后一个空格被视为此方法的第一个匹配项。

让我们举个例子 从字符串中删除前导和尾随空格

public class StringReplaceFistTest {

 public static void main(String[] args) {

 String string String with space 

 System.out.println( 替换前 \ string \ 

 System.out.println( 替换 \ string.replaceFirst( space , update ) \ 

 System.out.println( 替换头: \ string.replaceFirst( \\s , ) \ 

 System.out.println( 替换尾 \ string.replaceFirst( \\s $ , ) \ }

}

执行程序 输出结果

替换前 String with space 

替换 String with update 

替换头: String with space 

替换尾 String with space 

Java字符串(String类)(下) 前面小编给大家分享了Java语法的知识,今天和大家一起学习关于Java字符串的相关知识,字符串在校招笔试中也是常考的一类题目,也是非常的重要,希望看完这篇文章,能对你们有所帮助,fighting冲冲冲~~~
Java字符串(String类)(上) 前面小编给大家分享了Java语法的知识,今天和大家一起学习关于Java字符串的相关知识,字符串在校招笔试中也是常考的一类题目,也是非常的重要,希望看完这篇文章,能对你们有所帮助,fighting冲冲冲~~~
Java字符串 String类表示字符串。Java程序中的所有字符串文字,比如“abc”,都是作为这个类的实例实现的。字符串是常量,它们的值在创建后不能更改。