搜尋
首頁Javajava教程java中String字串刪除空格的方式有哪些

在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 '):

java中String字串刪除空格的方式有哪些

strip()

JDK 11的發行版中,新增了新的strip()方法來刪除字串中的前導和結尾空格。

trim方法只能針對ASCII值小於等於32的字元進行移除,但是根據Unicode標準,除了ASCII中的字元以外,還是有很多其他的空白字元的。

而且為了識別這些空格字符,從Java 1.5開始,也為Character類別新增了新的isWhitespace(int)方法。該方法使用unicode來標識空格字元。

java中String字串刪除空格的方式有哪些

而在Java 11中新增的這個strip方法就是使用這個Character.isWhitespace(int)方法來判斷是否為空白字元並刪除它們的:

java中String字串刪除空格的方式有哪些

java中String字串刪除空格的方式有哪些

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() 方法的差異

#Java 1 引入Java 11 引入
#trim strip
#########使用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方法可以替换掉字符串中的所有空白字符。需要特别注意的是,和trim方法一样,replace方法只能替换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'

以上是java中String字串刪除空格的方式有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:亿速云。如有侵權,請聯絡admin@php.cn刪除

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境