Javaで文字列の空白を削除する方法を現役エンジニアが解説【初心者向け】

初心者向けにJavaで文字列の空白を削除する方法について解説しています。ここではtrimメソッドを使った方法、replaceAllメソッドを使った方法を説明します。それぞれの用途と書き方を覚えましょう。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

監修してくれたメンター

井上 祐介

NEC・Microsoftの認定インストラクター。Z80アセンブラ・C++・C#・PHP・JAVAなどの経験を経て業務で使用するプログラムの開発や新入社員プログラミング研修の講師を行った。

Javaで文字列の空白を削除する方法について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

入力された名前や電話番号に含まれる不要な空白文字を削除する方法が分かります。

目次

1時間でできる無料体験!

そもそもJavaについてよく分からないという方は、Javaとは何なのか解説した記事を読むとさらに理解が深まります。

 

大石ゆかり

名前を入力させるプログラムを作っているんですが、余分なスペースが入っていてデータがそろわないんです・・・

山田 太郎  ,
   山田 花子,
 山田 三郎
田島悠介

それは大変だね。

文字列を扱うString型からstripメソッドreplaceAllメソッドで余分な空白文字を削除できるよ。

大石ゆかり

そんな便利な機能がString型にあるんですね。

田島悠介

そうなんだ。

文字列の前後の空白ならstripメソッド、文字列中のすべての空白ならreplaceAllメソッドで削除できるよ。

どちらのメソッドも全角と半角スペースの両方に対応できるんだ。

大石ゆかり

そうなんですね!さっそく使い方を教えてください!

 

前後の空白を削除する(stripメソッド)

文字列を扱うStringクラスにあるstripメソッドで、文字列の前後にある半角スペースと全角スペースの空白文字を削除します。

stripメソッドは2017年から使えるようになったJava 11に含まれるメソッドです。stripメソッドが使えない場合、replaceAllメソッドtrimメソッドを使います。replaceAllメソッドについては後半の解説記事「文字の間の空白を削除する(replaceAllメソッド)」、trimメソッドとstripメソッドの違いについては「stripメソッドとtrimメソッドの違い」の解説記事をご覧ください。

※文字の間にある空白文字を削除する場合は、後半の解説記事にあるreplaceAllメソッドを使います。

 

書式

String型.strip();

stripメソッドに引数はありません。

String型で宣言した変数などからstripメソッドを呼び出します。

stripメソッドを呼び出された文字列は、文字列の前後の空白文字(半角スペース全角スペース)が削除されます。

また、改行コードやタブコードなど空白の特殊文字も同様に削除できます。

特殊文字とは、キーボードから直接入力できない改行やタブなどの文字のことです。

 

【参考】Javaの特殊文字

改行やタブを文字列として扱えるようにしたものが特殊文字です。

Javaでは特殊文字の前に、エスケープシーケンス(\またはWindowsでは¥)をつけて特殊文字であることを表します。

改行は「\n」(または¥n)、タブは「\t」(または¥t)と表記します。

 

サンプルコード

前後に空白文字がある文字列から、前後の空白文字をstripメソッドで削除します。

ソースコード

public class StripSample {

    public static void main(String[] args) {
        //前後に空白文字が入った文字列
        String str_han_sp = "   前後に半角スペース     ";
        String str_zen_sp = "  前後に全角スペース   ";

        //加工前の文字列を表示
        System.out.println("==" + str_han_sp + "==");
        System.out.println("==" + str_zen_sp + "==");

        //空白行を空ける
        System.out.print("\n");

        //前後の空白文字を削除
        String str_han = str_han_sp.strip();
        String str_zen = str_zen_sp.strip();

        //結果を表示
        System.out.println("==" + str_han + "==");
        System.out.println("==" + str_zen + "==");
    }

}

表示結果

==   前後に半角スペース     ==
==  前後に全角スペース   ==

==前後に半角スペース==
==前後に全角スペース==

解説

String str_han_sp = " 前後に半角スペース ";
String str_zen_sp = " 前後に全角スペース ";

前後に半角スペースと全角スペースが入った文字列をString型の変数として宣言します。

「前後に半角スペース」の前に3つ、後ろに5つの半角スペースがあります。

「前後に全角スペース」には前に2つ、後ろに3つの全角スペースがあります。

 

System.out.println("==" + str_han_sp + "==");
System.out.println("==" + str_zen_sp + "==");

前後に空白文字が入った文字列を、修正後と比較するために出力します。

文字列の前後に「==」を付けているのは、前後の空白文字の存在をわかりやすくするためです。

 

System.out.print("\n");

修正前後の表示を区別するため、特殊文字で改行(\n)を出力します。

printメソッドだけでは改行が行われませんが、改行の特殊文字(\n)を出力すると改行されます。

System.out.println(“”);でも空白行が出力できます。

 

String str_han = str_han_sp.strip();
String str_zen = str_zen_sp.strip();

String型である変数 str_han_spとstr_zen_spからstripメソッドを呼び出します。

stripメソッドによって、文字列の前後にある全角スペースも半角スペースも削除されます。

前後の空白文字が削除された文字列が変数 str_hanとstr_zenに代入されます。

 

System.out.println("==" + str_han + "==");
System.out.println("==" + str_zen + "==");

空白文字が削除された結果を表示します。

stripメソッドでは文字列の前後にある空白なら、いくつでもすべて削除してくれます。

空白文字がなくなったことがわかりやすいように、文字列の前後に「==」をつけて表示しています。

 

文字の間の空白を削除する(replaceAllメソッド)

文字列の間にある空白も削除したいときは、StringクラスのreplaceAllメソッドを使います。

replaceAllメソッドは指定した文字をすべて置換するため、文字列の前後だけでなく間にある文字も置き換えられます。

書式

//全角と半角のスペースを文字列全体から削除
String型.replaceAll(" | ", "");

replaceAllメソッドは文字列を置換するためのメソッドです。

第1引数置き換えたい文字列を指定します。

削除したい空白が全角か半角のいずれかなら “ ”(全角スペース)や” “(半角スペース)のように指定できます。

全角と半角両方の空白を削除するときは、正規表現のパターンを使って“ | “(全角と半角のスペースをパイプ「|」で区切る)と指定します。

正規表現で「|」パイプは左側か右側のどちらかの文字に一致するパターンを表します。

第2引数置き換える文字列を指定します。

replaceAllメソッドを使って置き換えるときに文字列中から削除するには、第2引数空文字(””)を指定します。

※文字列を置換するメソッドとしてreplaceメソッドもあります。違いはreplaceAllメソッドなら正規表現を使って複雑な置換の条件を指定できることと、replaceメソッドは内部的にreplaceAllメソッドを呼び出しているため、replaceAllメソッドのほうがわずかに処理時間が速いことがあげられます。正規表現については「正規表現のルールとは」の記事をご覧ください。

パイプ|」は、日本語キーボードならシフトキーを押しながら右上の「¥」記号のキーを押すと入力できます。漢字入力はオフ(漢字やひらがなが入力できない状態)で入力します。

 

サンプルコード

前後や文字列中にある空白文字をreplaceAllメソッドで空文字列に置き換えて削除します。

ソースコード

public class ReplaceAllSample {

    public static void main(String[] args) {
        //空白文字が入った文字列
        String str_han_sp = "   H  E  L  L  O     ";
        String str_zen_sp = "  こ ん に ち は   ";

        //加工前の文字列を表示
        System.out.println("==" + str_han_sp + "==");
        System.out.println("==" + str_zen_sp + "==");

        //空白行を空ける
        System.out.print("\n");

        //前後の空白文字を削除
        String str_han = str_han_sp.replaceAll(" | ","");
        String str_zen = str_zen_sp.replaceAll(" | ","");

        //結果を表示
        System.out.println("==" + str_han + "==");
        System.out.println("==" + str_zen + "==");
    }

}

表示結果

==   H  E  L  L  O     ==
==  こ ん に ち は   ==

==HELLO==
==こんにちは==

解説

String str_han_sp = "   H  E  L  L  O     ";
String str_zen_sp = "  こ ん に ち は   ";

前後と字の間に半角スペースと全角スペースが入った文字列をString型の変数として宣言します。

「   H  E  L  L  O     」の前に3つ、後ろに5つ、字の間に2つずつの半角スペースがあります。

「  こ ん に ち は   」には前に2つ、後ろに3つ、字の間に1つずつの全角スペースがあります。

 

System.out.println("==" + str_han_sp + "==");
System.out.println("==" + str_zen_sp + "==");

前後に空白文字が入った文字列を、修正後と比較するために出力します。

文字列の前後に「==」を付けているのは、前後の空白文字の存在をわかりやすくするためです。

 

System.out.print("\n");

修正前後の表示を区別するため、特殊文字で改行(\n)を出力します。

printメソッドだけでは改行が行われませんが、改行の特殊文字(\n)を出力すると改行されます。

System.out.println(“”);でも空白行が出力できます。

 

String str_han = str_han_sp.replaceAll(" | ","");
String str_zen = str_zen_sp.replaceAll(" | ","");

String型である変数 str_han_spとstr_zen_spからreplaceAllメソッドを呼び出します。

replaceAllメソッドの第1引数に「” | “」(左から全角スペース、|「パイプ」、半角スペース)とすることにより、置き換える対象全角スペースか半角スペースのどちらかであることを正規表現で指定します。

第2引数置き換える文字を「””」空文字列にする、つまり対象文字を削除します。

文字列中の空白文字が削除された結果が変数 str_hanとstr_zenに代入されます。

 

System.out.println("==" + str_han + "==");
System.out.println("==" + str_zen + "==");

空白文字が削除された結果を表示します。

replaceAllメソッドでは文字列中や前後にある空白をすべて空文字列に置換して削除します。

 

[PR] Javaプログラミングで挫折しない学習方法を動画で公開中

まとめ

この記事では、Javaを使ってString型の空白文字を削除する方法について解説しました。

String型のstripメソッドによって、文字列の前後にある全角・半角スペースを削除できます。

文字列中の空白も削除するときはreplaceAllメソッドを使ってreplaceAll(“ | “, “”)のように呼び出します。

実際の開発で非常に役に立つ方法なので、ぜひ使ってみてください。

 

大石ゆかり

空白を削除する便利なメソッドがあったんですね。

前後の空白ならstripメソッド、文字の中の空白はreplaceAllメソッドで削除ですね。

田島悠介

そうだね。

replaceAllメソッドは削除というより、本来は文字列を置き換えるメソッドなんだけど空文字列を指定して文字を取り除くときにも使えるんだ。

大石ゆかり

replaceAllメソッドの引数にある正規表現っていうのは難しそうです。

田島悠介

たしかに正規表現を見ると、最初はとっつきにくいと感じるかもしれないね。

でも、正規表現を応用すれば数字だけのデータに電話番号のハイフンを付けてそろえたり、メールアドレスやURLの文字列かどうかをチェックしたりと、文字列のチェックやデータをそろえるのに便利なんだ。

大石ゆかり

へぇー。なんだか便利そうですね。

また今度、正規表現についても教えてください!

 

コラム

実は私も!?独学で損する人の特徴

「スクールは高いから独学で成功する」という気持ちの方は多いと思います。
もちろんその方が金額は低く抑えられるでしょう。
ただ 独学には向き不向きがあり、実はスクールが向いている人も大勢います。

そんな方のために参考として、 テックアカデミー卒業生がスクールを選んだ理由 をご紹介します。

  • ・困って挫折しそうなときに、質問や相談できる相手がいる環境で学んでいきたいなと思った
  • ・わかった気になっているだけだったので、自分を追い込む環境に置いた方がいいと感じた
  • ・スクールのカリキュラムで市場に求められるスキルを学ぶべきと思った

少しでも当てはまる部分があれば、 スクールが向いているかもしれません。
お試しのつもりで、まずは一度 無料相談 に参加してみませんか?

現役エンジニア・デザイナーに何でも気軽に相談できる30分すべて無料で できます。
無理な勧誘は一切ない ので、お気軽にご参加ください。

今なら相談した方限定の割引・参加特典付き! 無料相談はこちら

Javaを学習中の方へ

これで解説は終了です、お疲れさまでした。

  • つまずかず「効率的に」学びたい
  • 副業や転職後の「現場で使える」知識やスキルを身につけたい

プログラミングを学習していて、このように思ったことはありませんか?

テックアカデミーのJavaコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。

合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、JavaやServletの技術を使ったWebアプリケーション開発を学べます。

まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。

時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、現役エンジニア講師とマンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう 厳しい試験を通過した講師 があなたの相談に真摯に向き合います。

「ただ気になることを相談したい」
「漠然としているがプロの話を聞いてみたい」

こんな気持ちでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する