文字列の先頭と末尾から空白文字を取り除く

文字列の先頭や末尾に空白文字(スペースや改行)があった場合、 String クラスの trim メソッドおよび strip メソッドを使用すると文字列の先頭と末尾にある空白文字を取り除いた新しい文字列を取得できます。 trim と strip の違いは全角スペースを取り除くかどうかです。ここでは Java で文字列の前後にある空白文字を取り除く方法について解説します。

(Last modified: )

String.trimメソッドの使い方

文字列の前後に空白文字が含まれる場合に、空白文字を取り除いた新しい文字列を取得するには String クラスで用意されている trim メソッドを使用します。書式は次のとおりです。

public String trim()

戻り値:
値がこの文字列で、先頭と末尾のすべてのスペースが削除されているか、先頭または末尾のスペースがない場合は文字列。

取り除かれる空白文字は次の文字です。

\u0009  水平タブ(\t)
\u000A  改行(\n)
\u000B  垂直タブ
\u000C  改ページ(\f)
\u000D  復帰(\r)
\u001C
\u001D
\u001E
\u001F
\u0020  半角スペース

取り除かれるのは文字列の先頭部分と末尾部分にある空白文字です。つまり文字列の先頭から空白文字ではない文字が最初に出てくるまでの部分と、文字列の空白文字ではない最後の文字の次の文字から末尾までの部分を削除します。複数空白文字がある場合はすべて削除されます。また文字列の途中に空白文字があっても削除されません。

"ABCD"    --> "ABCD"
"  ABCD"  --> "ABCD"
"ABCD "   --> "ABCD"
" ABCD  " --> "ABCD"
"AB CD"   --> "AB CD"

次のサンプルを見てください。

String msg = "  AB CD ";

System.out.println("[" + msg.trim() + "]");  // [AB CD]

文字列の前後にある空白文字が削除された新しい文字列を取得しました。

なお String.trim メソッドでは全角スペースは削除されません。全角スペースもまとめて削除する場合はこのあとの String.strip メソッドを使用してください。

サンプルコード

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample8-1.java という名前で保存します。

class JSample8_1{
  public static void main(String[] args){
    String msg1 = " AB CD ";
    String msg2 = "\tAB CD\n";
    String msg3 = " AB CD ";

    System.out.println("[" + msg1 + "]");
    System.out.println("[" + msg1.trim() + "]");
    System.out.println("[" + msg2 + "]");
    System.out.println("[" + msg2.trim() + "]");
    System.out.println("[" + msg3 + "]");
    System.out.println("[" + msg3.trim() + "]");
  }
}

コンパイルを行います。

javac -encoding UTF-8 JSample8_1.java

その後で、次のように実行してください。

java JSample8_1

String.trimメソッドの使い方(1)

文字列の前後に半角スペースがある場合、タブや改行がある場合、全角スペースがある場合、でそれぞれ String.trim メソッドを実行して新しい文字列を取得しました。 trim メソッドの場合は半角スペースやタブ、改行の場合は取り除くことができましたが、全角スペースは取り除くことができませんでした。

String.stripメソッドの使い方

trim メソッドとほぼ同じ使い方できるのが strip メソッドです。文字列の前後に空白文字が含まれる場合に、空白文字を取り除いた新しい文字列を取得するには String クラスで用意されている strip メソッドを使用します。書式は次のとおりです。

public String strip()

戻り値:
値がこの文字列で、先頭と末尾の空白がすべて削除されている文字列

導入されたバージョン:
11

取り除かれる空白文字は次の文字です。

Unicodeの空白文字(SPACE_SEPARATOR、LINE_SEPARATOR、PARAGRAPH_SEPARATOR)
\u0009  水平タブ(\t)
\u000A  改行(\n)
\u000B  垂直タブ
\u000C  改ページ(\f)
\u000D  復帰(\r)
\u001C
\u001D
\u001E
\u001F
\u0020  半角スペース

Unicodeの空白文字というのは SPACE SEPARATOR (Unicode の空白文字) 、 LINE SEPARATOR (Unicode の行区切り文字) 、 PARAGRAPH SEPARATOR (Unicode の段落区切り文字) に含まれる宇文字が取り除かれます。そして全角スペース(\u3000)は SPACE SEPARATOR に含まれるため、 trim メソッドで取り除かれる文字に加えて全角スペースも取り除かれることになります。

SPACE SEPARATOR:
\u0020  半角スペース SPACE
\u1680  OGHAM SPACE MARK
\u2000 ~ \u200A  EN QUAD..HAIR SPACE
\u205F  MEDIUM MATHEMATICAL SPACE
\u3000  全角スペース IDEOGRAPHIC SPACE

LINE SEPARATOR:
\u2028

PARAGRAPH SEPARATOR:
\u2029

Unicode Character Database から抜粋しました。

※ SPACE SEPARATOR には他にノーブレークスペース と呼ばれる \u00A0 \u2007 \u202F の 3 つがありますが、 strip メソッドでは取り除かれません。

次のサンプルを見てください。

String msg = " AB CD ";

System.out.println("[" + msg.strip() + "]");  // [AB CD]

文字列の前後にある空白文字(全角スペース含む)が削除された新しい文字列を取得しました。

なお strip メソッドは文字列の先頭と末尾の空白文字を取り除きますが、文字列の先頭だけの空白文字を取り除く stripLeading メソッドと、文字列の末尾だけの空白を取り除く stripTrailing メソッドがそれぞれ用意されています。

public String stripLeading()

戻り値:
値がこの文字列で、先頭に空白がすべて削除されている文字列

導入されたバージョン:
11

public String stripTrailing()

戻り値:
値がこの文字列で、後続の空白がすべて削除されている文字列

導入されたバージョン:
11

使い方はそれぞれ strip メソッドと同じです。このあとのサンプルで実際に試してみます。

サンプルコード

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample8-2.java という名前で保存します。

class JSample8_2{
  public static void main(String[] args){
    String msg = " AB CD ";

    System.out.println("[" + msg + "]");
    System.out.println("[" + msg.strip() + "]");
    System.out.println("[" + msg.stripLeading() + "]");
    System.out.println("[" + msg.stripTrailing() + "]");
  }
}

コンパイルを行います。

javac -encoding UTF-8 JSample8_2.java

その後で、次のように実行してください。

java JSample8_2

String.stripメソッドの使い方(1)

それぞれのメソッドで文字列の先頭または末尾にある空白を取り除いた文字列を取得することができした。

-- --

Java で文字列の前後にある空白文字を取り除く方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。