【Java】
文字列に指定した文字が含まれるかチェックする

Stringクラスのcontains()の仕様と使い方

投稿日 2020/10/18 更新日 2023/08/26


こんにちは。当サイトの管理者「元木皇天」です。

contains()メソッドを使用すれば、文字列内に指定した文字が含まれるかどうかを判断することができます。 早速使い方を見ていきましょう

環境:Java11

contains()の仕様

JavaのStringクラスはcontains()というメソッドを持っています。このメソッドを使うことで 文字列の中に、引数として渡した文字列が含まれているかどうかを判断することができます。 引数には「String型」を使用します。戻り値は「boolean型」です。 引数に指定した文字列が含まれていれば「true」、含まれていなければ「false」を返します。
参考文献:スッキリわかるJava入門 実践編 第2版

では、さっそく使い方を解説します。

contains()の使い方

String型の変数に「.(ドット)」をつけてその後ろに「contains("文字列")」 という形で使用します。以下はその使用例です。この例では「"ABCDEFG"」に対し 様々な条件でcontains()を使用した場合の出力結果を見ていきます。

String str = "ABCDEFG";

//例1
boolean b1 = str.contains("A");
System.out.println(b1);
//出力結果:true

//例2
boolean b2 = str.contains("a");
System.out.println(b2);
//出力結果:false

//例3
boolean b3 = str.contains("AB");
System.out.println(b3);
//出力結果:true

//例4
boolean b4 = str.contains("AC");
System.out.println(b4);
//出力結果:false

・例1

「str」に「A」が含まれるかどうかをチェックしています。 もちろん「str」の中身は「ABCDEFG」なので含まれており、戻り値は「true」です。

・例2

「str」に「a」が含まれるかどうかをチェックしています。 contains()は、大文字と小文字を区別するので「a」は含みません。 よって戻り値は「false」です。

・例3

「str」に「AB」が含まれるかどうかをチェックしています。 「str」の中身に「AB」と連続した箇所が存在するので、戻り値は「true」です。

・例4

「str」に「AC」が含まれるかどうかをチェックしています。 「str」の中身は「ABCDEFG」であり、「A」と「C」が連続して含まれているわけではありません。 よって戻り値は「false」です。

空文字・nullの場合

String型で宣言した変数の中身が、「空文字」「null」 の場合にcontains()を使用するとどうなるのでしょうか。実際の実行結果を見てみましょう。

String strEmpty = "";
String strNull = null;

//例1
boolean b1 = strEmpty.contains("");
System.out.println(b1);
//出力結果:true

//例2
boolean b2 = strNull.contains("");
System.out.println(b2);
//出力結果:NullPointerException

//例3
boolean b3 = strNull.contains(null);
System.out.println(b3);
//出力結果:NullPointerException

例1

空文字「""」に対してcontains("")を使用すると「true」が返ってきます。 ただ、contains()にこだわらなくても、「isEmpty()」 というメソッドを使用すれば空文字かどうかの判定を行うことができますので、 そちらを使ってもいいと思います。

例2

nullに対してcontains("")を使用すると「NullPointerException」 例外が発生してしまいます。なのでこの判定方法ではnullを判定することはできません。

例3

nullに対してcontains(null)を使用した場合です。この場合も例2同様に 例外が発生してしまいます。これらのことから、nullを判定する場合は 「strNull == null」というように判定するのがいいかと思われます。

公式API

以下公式APIリンクです。

Java11 Stringクラス公式APIリンク

参考文献・おすすめ文献