Javaのcontains()メソッド徹底解説:文字列に部分文字列が含まれるか判定する方法
Javaのcontains()メソッドは、ある文字列の中に特定の部分文字列(サブストリング)が含まれているかどうかをチェックします。戻り値はtrueまたはfalseのどちらかで、引数として検索したい部分文字列を1つだけ受け取ります。
文字列操作でよくある課題
文字列を扱っていると、その文字列が特定の文字並びを含んでいるかどうかを確認したい場面が頻繁にあります。例えば、ユーザーの電話番号にアメリカの国コード(+1)が含まれているかをチェックするアプリを作る場合などが挙げられます。
Javaには、こうした判定を行うための組み込みメソッド「contains()」が用意されています。この記事では、具体的なコード例を交えながら、Stringクラスのcontains()メソッドを使って部分文字列の有無を確認する方法を解説します。
Javaの文字列(String)とは
Javaでは、文字列はテキストデータを格納するために使われます。文字列とは0個以上の文字の連なりであり、英字、記号、空白、数字などを自由に含めることができます。
文字列は、ダブルクォート(")で囲んだ文字の並びとして宣言します。以下はJavaでの文字列の例です。
String phone_number = "+1 000 000 0000";
この例では、phone_numberという変数を宣言し、文字列値を代入しています。この文字列には「+1 000 000 0000」という値が格納されました。
Java文字列の基本がわかったところで、contains()メソッドの使い方を見ていきましょう。
Java String contains()メソッドの使い方
JavaのString型には、文字列の内容を処理・操作するためのさまざまなメソッドが用意されています。そのひとつがcontains()です。このメソッドを使うと、文字列の中に特定の文字または文字シーケンスが含まれているかどうかを調べられます。
contains()は、文字列に特定の文字列が含まれているかを判定するJavaの組み込みメソッドです。構文は次のとおりです。
string_name.contains(substring);
contains()メソッドが受け取るパラメータは1つだけで、文字列内で検索したい文字シーケンスを指定します。
contains()の戻り値は2通りあります。指定した文字列が部分文字列を含んでいればtrueを返し、含んでいなければfalseを返します。
ここで、レストラン向けの予約管理プログラムを作るとしましょう。このプログラムは、顧客の名前と予約番号を受け取り、顧客が申告した名字が予約情報に登録されている名前と一致するかどうかを確認するものです。
顧客の名字が登録済みの名前と一致するかを確認するには、次のようなコードが使えます。
class CheckReservation {
public static void main(String[] args) {
String name_on_file = "Jeff Clinton";
String name_given_to_clerk = "Clinton";
if (name_on_file.contains(name_given_to_clerk)) {
System.out.println("This reservation is confirmed.");
} else {
System.out.println("This reservation does not exist.");
}
}
}
このコードを実行すると、次の出力が得られます。
This reservation is confirmed.
コードの内容を順番に見てみましょう。まず、CheckReservationというクラスを宣言し、プログラム全体のコードを格納しています。その後、プログラムは以下の手順で動作します。
- 予約時に電話で申告された氏名を格納する変数
name_on_fileを宣言します。 - 顧客の名字を格納する変数
name_given_to_clerkを宣言します。 - contains()メソッドを使って、登録されている氏名に係員へ伝えられた名字が含まれているかを確認します。
- 登録名に伝えられた名字が含まれていれば、「This reservation is confirmed.」がコンソールに出力されます。
- 含まれていなければ、「This reservation does not exist.」が出力されます。
contains()メソッドは、文字列に特定の部分文字列が含まれているかを確認したいときに非常に便利です。上の例では、顧客の氏名に係員へ伝えられた名字が含まれているかを確認するために使用しました。
大文字小文字を区別しないcontains()の実現方法
Javaのcontains()メソッドは大文字と小文字を区別します。つまり、指定した部分文字列の内容が文字列中に存在していても、大文字小文字まで一致していなければtrueは返されません。
ただし、大文字小文字に関係なく部分文字列の有無をチェックする方法もあります。toLowerCase()またはtoUpperCase()メソッドを使って、元の文字列と部分文字列の両方を小文字(または大文字)に揃えれば、contains()による公平な比較が可能になります。
例えば、係員が顧客の名字をすべて小文字で入力してしまったとしましょう。この場合、プログラムは次のように返します。
This reservation does not exist.
文字列の大文字小文字が異なるため、プログラムは同じ名前だと認識できないのです。しかし、toLowerCase()やtoUpperCase()を使えば、両方の文字列のケースを揃えて一貫性のある比較ができるようになります。
再びレストランの例に戻りましょう。係員が誤って大文字小文字を間違えて入力しても、予約が「存在しない」と判定されないよう、すべてのチェックを大文字小文字を区別しない形にしたいとします。以下は、toLowerCase()メソッドを使って大文字小文字を区別しないチェックを実現する例です。
class CheckReservation {
public static void main(String[] args) {
String name_on_file = "Jeff Clinton".toLowerCase();
String name_given_to_clerk = "clinton".toLowerCase();
if (name_on_file.contains(name_given_to_clerk)) {
System.out.println("This reservation is confirmed.");
} else {
System.out.println("This reservation does not exist.");
}
}
}
この例では、いくつか変更を加えています。まず、係員に伝えられた名前をすべて小文字に変更しました(値はClintonからclintonになっています)。次に、toLowerCase()メソッドを使って、name_on_fileとname_given_to_clerkの両方の変数を小文字に変換しています。
このコードの出力は次のとおりです。
This reservation is confirmed.
name_on_fileとname_given_to_clerkの変数はもともと異なる大文字小文字でしたが、toLowerCase()メソッドによって両方とも小文字に変換されるため、公平な比較が可能になります。
toUpperCase()メソッドもまったく同じ要領で使えます。こちらも2つの文字列を同じケースに揃えて比較できるようにするためです。
toUpperCase()およびtoLowerCase()メソッドについてさらに詳しく学びたい方は、それぞれのメソッドを詳しく解説したチュートリアルもあわせてご覧ください。
まとめ
Stringクラスのcontains()メソッドは、Javaである文字列が特定の部分文字列を含んでいるかどうかを確認するために使われます。
この記事では、contains()メソッドの基本的な使い方を具体例とともに解説しました。さらに、toUpperCase()とtoLowerCase()メソッドを組み合わせて、大文字小文字を区別しないチェックを行う方法についても取り上げました。
これで、あなたもJavaのcontains()メソッドをプロのように使いこなせるはずです!
-
Javaコンパイラ入門:仕組みの解説と初心者におすすめのオンラインIDE
5〜10年前、Javaを学ぶのは今ほど手軽なことではありませんでした。当時は、コンパイラとインタプリタを含むJava Development Kit(JDK)をダウンロードし、自分のマシン上で実行環境を整える必要がありました。しかし現在では、無料で利用できるJavaコンパイラがオンライン上に数多く存在します。この記事では、Java言語のコンパイルの仕組みと、練習やプロジェクト作成に活用できるオンラインツールについて詳しく解説します。 Javaプログラムはどのように実行されるのか? Javaは完全なコンパイル型言語ではありません。しかし、かといって完全なインタプリタ型言語でもありません。 ここ
-
Javaで文字列に部分文字列が含まれているか確認する方法|contains()の使い方を解説
はじめに この記事では、文字列の中に特定の部分文字列が含まれているかどうかを確認する方法を解説します。 まず用語を整理しておきましょう。文字列(String)とは、1つ以上の文字から構成され、ダブルクォート( )で囲まれたデータ型のことです。そして、その文字列の一部を切り出したものを部分文字列(substring)と呼びます。 Javaでは、Stringクラスが提供する contains() メソッドを使うことで、部分文字列の有無を簡単に判定できます。このメソッドは、引数に指定した文字列が含まれていれば true、含まれていなければ false を返します。 入力と出力のイメージ 入力の例: