icon
icon

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メソッドを呼び出された文字列から文字列の前後の空白文字(半角スペース全角スペース)を削除した文字列が返されます。

また、改行コードやタブコードなども同様に削除できます。

stripメソッドを呼び出した文字列そのものが変化するわけではなく、戻り値として結果が返ります。

 

【参考】Javaの特殊な文字

Javaでは改行やタブなどの特殊な文字を表現する方法があります。

特殊な文字の前に、エスケープシーケンス(\または¥)をつけます。

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

※Windowsでは使用しているアプリやフォント(書体)により、バックスラッシュ(\)が円記号(¥)で表示される場合があります。
 

サンプルコード

前後に空白文字がある文字列から、前後の空白文字を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_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引数空文字(””)を指定します。

replaceAllメソッドで変化するのは取得する戻り値の文字列で、呼び出し元の文字列は変化しません。

※文字列を置換するメソッドとして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分か60分お好きな時間が選べて、かつ3回まで すべて無料で ご利用できます。
無理な勧誘は一切ない ので、お気軽にご参加ください。

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

Javaを学習中の方へ

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

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

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

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

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

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

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

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

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

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

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

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

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

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