在 Java 中僅刪除字串的尾隨空格或空白
1. 概述
String
操作是 Java 程式設計中的常見任務。有時,尾隨空格可能會導致不一致、增加儲存大小,甚至導致意外錯誤。
在本快速教程中,我們將探索有效的技術,從 Java 中的給定String
中僅刪除尾隨空格或空白字元。
2.問題介紹
讓我們先建立一個輸入String
作為範例:
final static String INPUT = " abcde \t ";
當我們談論刪除尾隨空白字元時, trim()
方法可能是第一個想法。但是, trim()
方法會刪除前導和尾隨空白字元:
String result = INPUT.trim();
assertEquals("abcde", result);
我們必須保留原始輸入中的前導空白字元。因此, trim()
並不能解決我們的問題。
根據要求,我們可能需要消除所有尾隨空格或僅尾隨空格字元。重要的是要認識到空白包括空格和其他字符,例如 TAB ('\t') 。
例如,以INPUT
為例,刪除其尾隨空格將產生” abcde”
。相反,如果我們打算僅從INPUT,
我們期望獲得” abcde \t”
。正如我們所看到的,TAB 字元保持不變。
在本教程中,我們將介紹這兩個場景並解決刪除尾隨空格或空格的不同解決方案。
接下來,讓我們深入編碼。
3. 使用正規表示式和replaceAll()
方法
事實證明,Regex 是在 Java 中操作Strings
的強大實用程式。透過設計正規表示式模式來匹配尾隨空格或空格,我們可以有效地利用replaceAll()
方法來解決該問題。
例如,由於模式“ +$”
匹配尾隨連續空格字符,我們可以將此正則表達式模式傳遞給replaceAll()
以刪除尾隨空格:
String result1 = INPUT.replaceAll(" +$", "");
assertEquals(" abcde \t", result1);
正如我們所看到的,TAB 字元及其前面的空格保持不變。
類似地, “\\s+$”
是一種刪除所有尾隨空格的模式:
String result2 = INPUT.replaceAll("\\s+$", "");
assertEquals(" abcde", result2);
4.使用stripTrailing()
方法
在 Java 11 中, stripTrailing()
方法作為String
類別的新增內容引入。顧名思義, stripTrailing()
允許我們方便地刪除尾隨空格:
String result = INPUT.stripTrailing();
assertEquals(" abcde", result);
5. 使用 Apache Commons Lang 3 的stripEnd()
Apache Commons Lang 3 是一個廣泛使用的函式庫。它的StringUtils
類別提供了一組豐富的、方便的String
操作實用程式。例如, stripEnd()
方法從輸入**String** .
因此,我們可以用它來刪除尾隨空格:
String result = StringUtils.stripEnd(INPUT, " ");
assertEquals(" abcde \t", result);
值得一提的是,由於stripEnd()
僅採用預先定義的String
作為stripChars
參數,我們無法使用此方法刪除尾隨空白字元。
六,結論
在本文中,我們探討了刪除尾隨空格或空白的不同方法。這些解決方案包含 Java 標準函式庫和外部函式庫 Apache Commons Lang 3。
與往常一樣,範例的完整原始程式碼可在 GitHub 上取得。