java中String字符串删除空格的七种方式

目录
  • trim()
  • strip()
  • stripLeading() 和 stripTrailing()
  • replace
  • replaceAll
  • replaceFirst
  • 总结

在Java中从字符串中删除空格有很多不同的方法,如trimreplaceAll等。但是,在JDK 11添加了一些新的功能,如stripstripLeadingstripTrailing等。

想要从String中移除空格部分,有多少种方法,下面介绍JDK原生自带的方法,不包含第三方工具类库中的类似方法

  • trim() : 删除字符串开头和结尾的空格。
  • strip() : 删除字符串开头和结尾的空格。
  • stripLeading() : 只删除字符串开头的空格
  • stripTrailing() : 只删除字符串的结尾的空格
  • replace() : 用新字符替换所有目标字符
  • replaceAll() : 将所有匹配的字符替换为新字符。此方法将正则表达式作为输入,以标识需要替换的目标子字符串
  • replaceFirst() : 仅将目标子字符串的第一次出现的字符替换为新的字符串

需要注意的最重要的一点是,在Java中String对象是不可变的,这意味着我们不能修改字符串,因此以上所有的方法我们得到的都是一个新的字符串。

在线运行工具

trim()

trim()是Java开发人员最常用的删除字符串开头和结尾的空格方法

public class StringTest {

    public static void main(String[] args) {

        String stringWithSpace = "   Hello word java  ";

        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 : '   Hello word java  '
After trim : 'Hello word java'

使用trim之后,原字符串中开头和结尾部分的空格内容都被移除掉了。其实,trim移除的空白字符指的是指ASCII值小于或等于32的任何字符(’ U+0020 '):

strip()

JDK 11的发行版中,添加了新的strip()方法来删除字符串中的前导和末尾空格。

trim方法只能针对ASCII值小于等于32的字符进行移除,但是根据Unicode标准,除了ASCII中的字符以外,还是有很多其他的空白字符的。

而且为了识别这些空格字符,从Java 1.5开始,还在Character类中添加了新的isWhitespace(int)方法。该方法使用unicode来标识空格字符。你可以在http://jkorpela.fi/chars/spaces.html 了解更多关于unicode空格字符的信息。

而在Java 11中新增的这个strip方法就是使用这个Character.isWhitespace(int)方法来判断是否为空白字符并删除它们的:

strip示例

public class StringTest {

    public static void main(String args[]) {

      String stringWithSpace ='\u2001' + "  Hello word java  " + '\u2001';

        System.out.println("'" + '\u2001' + "' is space : " +  Character.isWhitespace('\u2001'));

        StringTest.stripTest(stringWithSpace);

    }

    private static void stripTest(String stringWithSpace){

        System.out.println("Before strip : \'" + stringWithSpace + "\'");

        String stringAfterTrim = stringWithSpace.strip();

        System.out.println("After strip : \'" + stringAfterTrim + "\'");

    }

}

结果

' ' is space : true
Before strip : '   Hello word java   '
After strip : 'Hello word java'

Java 11 中的 strip() 方法要比trim()方法更加强大,他可以移除很多不在ASCII中的空白字符,判断方式就是通过Character.isWhitespace()方法。

trim() 和 strip() 方法的区别

trim strip
Java 1 引入 Java 11 引入
使用ASCII 使用Unicode值
删除开头和结尾的空白字符 删除开头和结尾的空白字符
删除ASCII值小于或等于’U+0020’或’32’的字符 根据unicode删除所有空白字符

stripLeading() 和 stripTrailing()

stripLeading()stripTrailing()方法也都是在Java 11中添加的。作用分别是删除字符串的开头的空格以及删除字符串的末尾的空格。
stripLeadingstripTrailing也使用Character.isWhitespace(int)来标识空白字符。用法也和strip类似:

public class StringTest {

    public static void main(String args[]) {

      String stringWithSpace ='\u2001' + "  Hello word java  " + '\u2001';

        System.out.println("'" + '\u2001' + "' is space : " +  Character.isWhitespace('\u2001'));

        StringTest.stripLeadingTest(stringWithSpace);

        StringTest.stripTrailingTest(stringWithSpace);

    }

    private static void stripLeadingTest(String stringWithSpace){
        System.out.println("删除开头的空白字符");

        System.out.println("Before stripLeading : \'" + stringWithSpace + "\'");

        String stringAfterTrim = stringWithSpace.stripLeading();

        System.out.println("After stripLeading : \'" + stringAfterTrim + "\'");

    }

     private static void stripTrailingTest(String stringWithSpace){
         System.out.println("删除结尾的空白字符");

        System.out.println("Before stripTrailing : \'" + stringWithSpace + "\'");

        String stringAfterTrim = stringWithSpace.stripTrailing();

        System.out.println("After stripTrailing : \'" + stringAfterTrim + "\'");

    }

}

输出结果:

' ' is space : true
删除开头的空白字符
Before stripLeading : '   Hello word java   '
After stripLeading : 'Hello word java   '
删除结尾的空白字符
Before stripTrailing : '   Hello word java   '
After stripTrailing : '   Hello word java'

replace

replace是从java 1.5中添加的,可以用指定的字符串替换每个目标子字符串。

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

 public class StringTest {

    public static void main(String args[]) {

        String stringWithSpace ="  Hello word java  ";

        StringTest.replaceTest(stringWithSpace);

    }

    private static void replaceTest(String stringWithSpace){

        System.out.println("Before replace : \'" + stringWithSpace + "\'");

        String stringAfterTrim = stringWithSpace.replace(" ", "");

        System.out.println("After replace : \'" + stringAfterTrim + "\'");

    }

}

结果:

Before replace : '  Hello word java  '
After replace : 'Hellowordjava'

使用replace方法可以替换掉字符串中的所有空白字符。特别需要注意的是,replace方法和trim方法一样,只能替换掉ASCII中的空白字符。

replaceAll

replaceAll是Jdk 1.4中添加的最强大的字符串操作方法之一。我们可以将这种方法用于许多目的。
使用replaceAll()方法,我们可以使用正则表达式来用来识别需要被替换的目标字符内容。使用正则表达式,就可以实现很多功能,如删除所有空格,删除开头空格,删除结尾空格等等。

\s+   所有的空白字符
^\s+      字符串开头的所有空白字符
\s+$      字符串结尾的所有空白字符

在java中要添加\我们必须使用转义字符,所以对于\s+ 我们必须使用 \\s+

replaceAll(regex, “”); // 将正则表达式匹配到的内容,替换为""

public class StringTest {

    public static void main(String args[]) {

        String stringWithSpace ="  Hello word java  ";

        StringTest.replaceAllTest(stringWithSpace," ");

        StringTest.replaceAllTest(stringWithSpace,"\\s+");

        StringTest.replaceAllTest(stringWithSpace,"^\\s+");

        StringTest.replaceAllTest(stringWithSpace,"\\s+$");

    }

    private static void replaceAllTest(String stringWithSpace,String regex){

        System.out.println("Before replaceAll with '"+ regex +"': \'" + stringWithSpace + "\'");

        String stringAfterTrim = stringWithSpace.replaceAll(regex, "");

        System.out.println("After replaceAll with '"+ regex +"': \'" + stringAfterTrim + "\'");

    }

}

Before replaceAll with ' ': '  Hello word java  '
After replaceAll with ' ': 'Hellowordjava'
Before replaceAll with '\s+': '  Hello word java  '
After replaceAll with '\s+': 'Hellowordjava'
Before replaceAll with '^\s+': '  Hello word java  '
After replaceAll with '^\s+': 'Hello word java  '
Before replaceAll with '\s+$': '  Hello word java  '
After replaceAll with '\s+$': '  Hello word java'

replaceFirst

replaceFirst方法也是在jdk1.4中添加的,它只将给定正则表达式的第一个匹配项替换为替换字符串。

public class StringTest {

    public static void main(String args[]) {

        String stringWithSpace ="  Hello word java  ";

        StringTest.replaceFirstTest(stringWithSpace," ");

        StringTest.replaceFirstTest(stringWithSpace,"\\s+");

        StringTest.replaceFirstTest(stringWithSpace,"^\\s+");

        StringTest.replaceFirstTest(stringWithSpace,"\\s+$");

    }

    private static void replaceFirstTest(String stringWithSpace,String regex){

        System.out.println("Before replaceFirst with '"+ regex +"': \'" + stringWithSpace + "\'");

        String stringAfterTrim = stringWithSpace.replaceFirst(regex, "");

        System.out.println("After replaceFirst with '"+ regex +"': \'" + stringAfterTrim + "\'");

    }

}

结果:

Before replaceFirst with ' ': '  Hello word java  '
After replaceFirst with ' ': ' Hello word java  '
Before replaceFirst with '\s+': '  Hello word java  '
After replaceFirst with '\s+': 'Hello word java  '
Before replaceFirst with '^\s+': '  Hello word java  '
After replaceFirst with '^\s+': 'Hello word java  '
Before replaceFirst with '\s+$': '  Hello word java  '
After replaceFirst with '\s+$': '  Hello word java'

总结

想要直接移除掉字符串开头的空白字符,可以使用stripLeadingreplaceAllreplaceFirst

想要直接移除掉字符串末尾的空白字符,可以使用stripTrailingreplaceAllreplaceFirst

想要同时移除掉字符串开头和结尾的空白字符,可以使用striptrim

想要移除掉字符串中的所有空白字符,可以使用replacereplaceAll

而Java 11种新增的strip、stripTrailing以及stripLeading方法,可以移除的字符要比其他方法多,他可以移除的空白字符不仅仅局限于ASCII中的字符,而是Unicode中的所有空白字符,具体判断方式可以使用Character.isWhitespace进行判断。

到此这篇关于java中String字符串删除空格的七种方式的文章就介绍到这了,更多相关java String字符串删除空格 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java字符串中删除指定子字符串的方法简介

    有些字符串是我们存储某种类型名称的,往往有逗号','或者其他符号来分隔.如果我们删除某一个参数时,往往没有数组或者列表那么方便.但是,如果有了下面这个方法,我们同样可以做好. public class Test3 { /** * @param args */ public static void main(String[] args) { //要切割的字符串 String s = "123.jpg,113.jpg,121.jpg,122.jpg,131.jpg"; String sub

  • java如何删除以逗号隔开的字符串中某一个值

    目录 删除以逗号隔开的字符串中某一个值 移除以逗号分隔的字符串中指定元素 适用场景 核心代码 测试验证 删除以逗号隔开的字符串中某一个值 例如要删除 “1,2,3,4” 中的 2,返回 “1,3,4” import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class test { public static void main(String[] args) { String str="

  • Java字符串技巧之删除标点或最后字符的方法

    删除字符串的所有标点 str = str.replaceAll("[\\pP''""]", ""); 在这里利用的是Unicode编码,Unicode 编码并不只是为某个字符简单定义了一个编码,而且还将其进行了归类. \pP 其中的小写 p 是 property 的意思,表示 Unicode 属性,用于 Unicode 正表达式的前缀. 大写 P 表示 Unicode 字符集七个字符属性之一:标点字符. 其他六个是 L:字母: M:标记符号(一般

  • java中String字符串删除空格的七种方式

    目录 trim() strip() stripLeading() 和 stripTrailing() replace replaceAll replaceFirst 总结 在Java中从字符串中删除空格有很多不同的方法,如trim,replaceAll等.但是,在JDK 11添加了一些新的功能,如strip.stripLeading.stripTrailing等. 想要从String中移除空格部分,有多少种方法,下面介绍JDK原生自带的方法,不包含第三方工具类库中的类似方法 trim() : 删

  • java中List去除重复数据的5种方式总结

    前言 List 是一个接口,它继承于Collection的接口.它代表着有序的队列.当我们讨论List的时候,一般都和Set作比较. List中元素可以重复,并且是有序的(这里的有序指的是按照放入的顺序进行存储.如按照顺序把1,2,3存入List,那么,从List中遍历出来的顺序也是1,2,3). Set中的元素不可以重复,并且是无序的(从set中遍历出来的数据和放入顺序没有关系). 以下介绍五种-不同的方法去除 Java 中ArrayList中的重复数据 1.使用LinkedHashSet删除

  • Java 中责任链模式实现的三种方式

    责任链模式 责任链模式的定义:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系, 将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止.这里就不再过多的介绍什么是责任链模式,主要来说说java中如何编写.主要从下面3个框架中的代码中介绍. servlet中的filter dubbo中的filter mybatis中的plugin 这3个框架在实现责任链方式不尽相同. servlet中的Filter servlet中分别定义了一个 Filter和Filter

  • java中创建、写入文件的5种方式

    在java中有很多的方法可以创建文件写文件,你是否真的认真的总结过?下面笔者就帮大家总结一下java中创建文件的五种方法. Files.newBufferedWriter(Java 8) Files.write(Java 7 推荐) PrintWriter File.createNewFile FileOutputStream.write(byte[] b) 管道流 实际上不只这5种,通过管道流的排列组合,其实有更多种,但是笔者总结的这五种可以说是最常用及最佳实践, 前提小知识 以前我在写技术文

  • Java中Map实现线程安全的3种方式

    目录 方式1. 使用Hashtable 方式2. 使用Collections.synchronizedMap(newHashtable()) 方式3. 使用ConcurrentHashMap 方式1.  使用Hashtable Map<String,Object> hashtable=new Hashtable<String,Object>(); 这是所有人最先想到的,那为什么它是线程安全的?那就看看它的源码,我们可以看出我们常用的put,get,containsKey等方法都是同

  • 关于Java中String类字符串的解析

    目录 一.前言 二.String类概述 三.字符串的特点 四.String 构造方法 五.String类对象的特点 六.比较字符串的方法 七.判断两个字符串地址是否相等 一.前言 在java中,和C语言一样,也有关于字符串的定义,并且有他自己特有的功能,下面我们一起来学习一下. 二.String类概述 string在软件包java.lang下,所以不需要导包. String字符串是java中的重点,String 类表示字符串类 ,所有的字符串(如"adf")都属于 此类,也就是说有&q

  • 详解java中String值为空字符串与null的判断方法

    Java空字符串与null的区别 1.类型 null表示的是一个对象的值,而不是一个字符串.例如声明一个对象的引用,String a=null. ""表示的是一个空字符串,也就是说它的长度为0.例如声明一个字符串String s="". 2.内存分配 String a=null:表示声明一个字符串对象的引用,但指向为null,也就是说还没有指向任何的内存空间. String s="":表示声明一个字符串类型的引用,其值为""空

  • 关于Java中String创建的字符串对象内存分配测试问题

    一.创建String对象的两种常用方法比较 举例说明 String str1 = "Java天下第一"; //方法1 String str2 = new String("Java天下第一"); //方法2 System.out.println(str1 == str2); //比较地址,false System.out.println(str1 == str2.intern()); //true 区别 2.1 方法1中,首先会去JVM的常量池里查找是否有存储&quo

  • Java中String的split切割字符串方法实例及扩展

    目录 一.public String[] split(String regex) 二.public String[] split(String regex, int limit) 三.扩展 总结 一.public String[] split(String regex) public String[] split(String regex): 根据传入的字符串参数,作为规则,切割当前字符串 String a="198,168,10,1"; String [] arr=a.split(&

  • Java中String类常用方法使用详解

    目录 一.length() 二.equals 三.charAt() 四.indexOf() 五.trim() 六.compareTo() 七.toLowerCase() 八.toUpperCase() 九.replace() 十.substring(int beginIndex) 十一.substring(int beginIndex, int endIndex) 总结 一.length() 返回此字符串的长度 public static void main4(String[] args) {

随机推荐