在Java中从字符串中删除空格的不同方法
前言
技术不进则退 学无止境。
今天 我们来聊一下 字符串是如何剔除掉空格的。因为在很多时候 会用到这个功能。
字符串操作在编程时是最普通的操作。其中一个比较频繁的操作就是删除字符串文本中或字符串周围的空格。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 spacejdk11 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 spacestrip 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 spaceJdk11 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 spacereplace(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 格式化后: StringwithspacereplaceAll (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”,都是作为这个类的实例实现的。字符串是常量,它们的值在创建后不能更改。
相关文章
- java基础---->数组的基础使用(一)
- java中string数组转换为list列表的方法
- Java 提示“找不到或无法加载主类” 解决方法
- Java System.lineSeparator 方法
- java的几种for循环方法
- Intellij IDEA 解决了 Java 8 数据流问题,不愧是最智能的 Java IDE!
- 由Java中toString()方法引发的无意识的递归想到的
- DES加密 java与.net可以相互加密解密两种方法
- JAVA面试题:equals()方法和== 区别
- Java正则速成秘籍(三)之见招拆招篇
- java写文件时往末尾追加文件(而不是覆盖原文件),的两种方法总结
- java 加密解密方式
- 传智播客Java 方法
- java-容器-collection的sort方法
- java本地方法如何调用其他程序函数,方法详解2
- android java.io.IOException: open failed: EBUSY (Device or resource busy)
- Java 读取 .properties 配置文件的几种方式
- 已解决java.lang.NoClassDefFoundError异常的正确解决方法,亲测有效!!!
- Java 时间字符串中提取时间和分钟(HH:mm)的方法
- java Random.nextInt()方法
- Java数组的应用:案例:杨辉三角,三维数组,字符串数组