在Java中從字符串中刪除空格
一、概述
當我們在 Java 中操作String
時,我們經常需要從String
中刪除空格。
在本教程中,我們將探討在 Java 中從String
中刪除空格的常見場景。
2. 問題介紹
為了更容易理解這個問題,我們先來看一個字符串示例:
String myString = " I am a wonderful String ! ";
上面的示例顯示myString
變量在中間包含多個前導、尾隨空格和空白字符。
通常,當我們需要在Java中處理myString
這樣的字符串時,我們經常會面臨這兩個需求:
- 從給定的字符串中刪除所有空白字符 ->
“IamawonderfulString!”
- 用一個空格替換連續的空白字符並刪除所有前導和尾隨空白字符->
“I am a wonderful String !”
接下來,我們將針對每種情況介紹兩種方法:使用String
類中方便的replaceAll()
方法和廣泛使用的 Apache Commons Lang3 庫中的StringUtils
類。
為簡單起見,在本教程中,我們在討論空格時不涉及Unicode 字符集中的空格字符。此外,我們將使用測試斷言來驗證每個解決方案。
現在,讓我們看看他們的行動。
3.從字符串中刪除所有空格
3.1。使用String.replaceAll()
首先,讓我們使用replaceAll()
方法從字符串中刪除所有空格。
replaceAll()
適用於正則表達式 (regex)。我們可以使用正則表達式字符類' \s
'來匹配一個空白字符。我們可以將輸入字符串中的每個空白字符替換為一個空字符串來解決這個問題: inputString.replaceAll(“\\s”, “”)
。
接下來,讓我們創建一個測試,看看這個想法是否適用於我們的示例字符串:
String result = myString.replaceAll("\\s", "");
assertThat(result).isEqualTo("IamawonderfulString!");
如果我們運行測試,它就會通過。所以, replaceAll()
方法解決了這個問題。接下來,讓我們使用 Apache Commons Lang3 解決問題。
3.2.使用 Apache Commons Lang3 庫
Apache Commons Lang3 庫附帶了一個[StringUtils](https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html)
實用程序,它允許我們方便地操作字符串。
要開始使用 Apache Commons Lang 3,讓我們添加Maven 依賴項:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
如果我們檢查StringUtils
類中的方法,有一個方法叫做deleteWhitespace()
。名字暗示這是我們正在尋找的方法。
接下來,讓我們使用StringUtils.deleteWhitespace()
從字符串中刪除所有空格:
String result = StringUtils.deleteWhitespace(myString);
assertThat(result).isEqualTo("IamawonderfulString!");
如果我們執行它,測試就會通過。因此, deleteWhitespace()
完成了這項工作。
4. 用一個空格替換連續的空白字符
4.1。使用String.replaceAll()
現在,讓我們看看另一種情況。我們可以分兩步解決這個問題:
- 用一個空格替換連續的空格
- 修剪第一步的結果
值得一提的是,我們也可以先修剪輸入字符串,然後替換連續的空格。因此,我們先採取哪一步並不重要。
第一步,我們仍然可以使用帶有正則表達式的replaceAll()
來匹配連續的空白字符並設置一個空格作為替換。
正則表達式 '\s+' 匹配一個或多個空白字符。因此,我們可以調用replaceAll(“\\s+”, ” “)
方法來完成第一步。然後,我們可以調用String.trim()
方法來應用修剪操作。
接下來,讓我們創建一個測試來檢查我們的想法是否可以解決問題。為了清楚起見,我們為這兩個步驟編寫了兩個斷言:
String result = myString.replaceAll("\\s+", " ");
assertThat(result).isEqualTo(" I am a wonderful String ! ");
assertThat(result.trim()).isEqualTo("I am a wonderful String !");
如果我們試一試,測試就通過了。因此,該方法按預期工作。
接下來,讓我們使用 Apache Commons Lang 3 庫來解決這個問題。
4.2.使用 Apache Commons Lang3 庫
StringUtils.normalizeSpace()
方法修剪輸入字符串,然後用單個空格替換空白字符序列。因此,我們可以直接調用這個方法來解決問題:
String result = StringUtils.normalizeSpace(myString);
assertThat(result).isEqualTo("I am a wonderful String !");
如果我們執行它,測試就會通過。正如我們所見, StringUtils.normalizeSpace()
使用起來非常簡單。
5. 結論
在本文中,我們學習瞭如何在 Java 中從字符串中刪除空白字符。
與往常一樣,完整的源代碼可在 GitHub 上獲得。