Java後ろ空白Trim

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)が最も効率的です。

用途や環境に応じて適切な方法を選んでください!

コメント

タイトルとURLをコピーしました