Javaで後ろの空白(文字列の末尾にある空白)をトリムするには、Stringクラスの標準メソッドや正規表現を使用することで実現できます。標準のtrim()メソッドでは前後両方の空白が削除されますが、「後ろの空白のみをトリムしたい場合」は、正規表現を使った処理が必要です。
以下にいくつかの方法を示します:
方法1: 正規表現を使って末尾の空白を削除する
public class TrimTrailingSpaces {
public static void main(String[] args) {
// テスト文字列(後ろに空白を含む)
String input = "Hello World ";
// 末尾の空白を削除
String trimmed = input.replaceAll("\\s+$", "");
// 結果を表示
System.out.println("[" + trimmed + "]");
System.out.println("長さ: " + trimmed.length());
}
}
実行結果:
[Hello World]
長さ: 11
解説:
replaceAll("\\s+$", ""):\\s+は1つ以上の空白文字(スペース、タブ、改行など)を表します。$は「文字列の末尾」を意味します。- これにより末尾の空白をすべて削除します。
方法2: 手動で末尾の空白を削除するロジックを実装する
public class TrimTrailingSpaces {
public static void main(String[] args) {
// テスト文字列(後ろに空白を含む)
String input = "Hello World ";
// 末尾の空白を削除するメソッドを呼び出し
String trimmed = trimTrailingSpaces(input);
// 結果を表示
System.out.println("[" + trimmed + "]");
System.out.println("長さ: " + trimmed.length());
}
public static String trimTrailingSpaces(String str) {
int end = str.length();
// 末尾の空白を探す(逆ループ)
while (end > 0 && Character.isWhitespace(str.charAt(end - 1))) {
end--;
}
// 必要な部分だけ切り出して返す
return str.substring(0, end);
}
}
実行結果:
[Hello World]
長さ: 11
解説:
- ロジックの流れ:
Character.isWhitespace()を使って末尾から空白かどうかを判定します。- 空白が無くなるまでインデックスを減らし、判定位置を前に進めます。
- 最終的に必要な部分を
substring()で切り出すことで、末尾の空白を取り除きます。 - 特徴:
- 正規表現を使用せずに動作するため、より基本的な方法です。
方法3: Apache Commons Lang を使用
Apache Commons Langライブラリには、文字列操作のための便利なユーティリティが多数用意されています。その中にあるStringUtils.stripEndを利用すると、末尾の空白を簡単に削除できます。
事前準備:
Apache Commons Langをプロジェクトに導入する必要があります。Mavenの場合は、以下の設定をpom.xmlに追加します。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
実装コード:
import org.apache.commons.lang3.StringUtils;
public class TrimTrailingSpaces {
public static void main(String[] args) {
// テスト文字列(後ろに空白を含む)
String input = "Hello World ";
// 末尾の空白を削除
String trimmed = StringUtils.stripEnd(input, " ");
// 結果を表示
System.out.println("[" + trimmed + "]");
System.out.println("長さ: " + trimmed.length());
}
}
実行結果:
[Hello World]
長さ: 11
解説:
StringUtils.stripEnd(input, " "):- 第1引数(
input)は処理対象の文字列。 - 第2引数(空白文字
" ")は取り除きたい文字列のセット。 - 末尾の指定文字列(この場合はスペース)だけを削除します。
方法4: Java 11以降の場合、String.stripTrailing()を使用
Java 11以降で導入されたString.stripTrailing()メソッドを使用すると、末尾の空白を簡単に削除できます。
public class TrimTrailingSpaces {
public static void main(String[] args) {
// テスト文字列(後ろに空白を含む)
String input = "Hello World ";
// 末尾の空白を削除
String trimmed = input.stripTrailing();
// 結果を表示
System.out.println("[" + trimmed + "]");
System.out.println("長さ: " + trimmed.length());
}
}
実行結果:
[Hello World]
長さ: 11
解説:
stripTrailing()は文字列の末尾の空白をすべて削除します。- このメソッドはJava 11以降の標準APIの一部です。
どの方法を選ぶべきか?
- シンプルで普遍的な対応:
- 正規表現(方法1)が適しています。
- 実装が簡単で、軽量です。
- 正規表現を避けたい場合:
- 手動で処理するロジック(方法2)を使います。
- ライブラリ活用:
- Apache Commons Lang(方法3)を既存プロジェクトで活用している場合に便利です。
- Java 11以降を使用している場合:
- 標準APIの
stripTrailing()(方法4)が最も効率的です。
用途や環境に応じて適切な方法を選んでください!

コメント