文字列の判定
![アイキャチ画像](/img/9h9uZcCD/Eyecatch.webp)
Javaで文字列を判定する方法をいくつかご紹介します。
equalsメソッド
文字列の判定に、等価記号を使ってしまうケースがありますがこれは間違いです。
なぜならJavaの等価記号(==)は同一性を評価する為、このようなことが起きます。
なので他の言語では『True』になる条件でも、Javaでは『False』になってしまう場合があるので文字列を判定する際はそれぞれの性質を理解した上で行うようにしましょう。
![](/xxxdeta-box/xxxOLD/0001.png)
文字列の同値性を判定するメソッド
【使い方】
判定対象.equals("比較文字")
【戻り値】
boolean型
引数の型 | 説明 |
---|---|
String | 比較文字 |
よくある間違い
String str1 = new String("hoge");
String str2 = new String("hoge");
boolean judgement = str1 == str2;
System.out.println(judgement);
// コンソール [実行結果]
false
今回の例だと同一性を評価した結果、str1とstr2はそれぞれ別のインスタンスであるため結果はfalseとなっています。
正しい判定方法
String str1 = new String("hoge");
String str2 = new String("hoge");
boolean judgement = str1.equals(str2);
System.out.println(judgement);
// コンソール [実行結果]
true
Stringクラスのequalsメソッドは同値性を評価します。
str1とstr2は同じ文字列をデータとして持っているので、そこを評価すると期待通りの結果を得ることができます。
![ペンタ](./xxxdeta-box/xxxOLD/0001.png)
Javaを覚えたての時は間違えやすいので注意しましょう!
isEmptyメソッド
JavaのStringクラスには
![](/xxxdeta-box/xxxOLD/0001.png)
判定対象.isEmpty()
【戻り値】
boolean型
※Stringインスタンスの文字列が0ならTure
空文字の場合
// 空文字
String str1 = "";
System.out.println(str1.isEmpty());
// コンソール [実行結果]
true
半角空白の場合
// 半角空白
String str2 = " ";
System.out.println(str2.isEmpty());
// コンソール [実行結果]
false
全角空白の場合
// 全角空白
String str3 = " ";
System.out.println(str3.isEmpty());
// コンソール [実行結果]
false
文字列の場合
// 文字列
String str4 = "hoge";
System.out.println(str4.isEmpty());
// コンソール [実行結果]
false
このように文字列が
![ペンタ](./xxxdeta-box/xxxOLD/0001.png)
場合によってNULLチェックをしよう!
isBlankメソッド
isBlankメソッドを使うと、空白文字列かどうか確認することができます。
![](/xxxdeta-box/xxxOLD/0001.png)
判定対象.isBlank()
【戻り値】
boolean型
空文字の場合
/// 空文字
String str1 = "";
System.out.println(str1.isBlank());
// コンソール [実行結果]
true
半角空白の場合
// 半角空白
String str2 = " ";
System.out.println(str2.isBlank());
// コンソール [実行結果]
true
全角空白の場合
// 全角空白
String str3 = " ";
System.out.println(str3.isBlank());
// コンソール [実行結果]
true
文字列の場合
// 文字列
String str4 = "hoge";
System.out.println(str4.isBlank());
// コンソール [実行結果]
false
このように文字列が
![ペンタ](./xxxdeta-box/xxxOLD/0001.png)
場合によってNULLチェックをしよう!
matchesメソッド
matchesメソッドを使うと対象の文字列が正規表現で一致するか判定することができます。
![](/xxxdeta-box/xxxOLD/0001.png)
判定対象.matches("正規表現")
【戻り値】
boolean型
hで始まり数字で終わる文字列か判定する
String pattern = "^h.+[0-9]$";
String str1 = " hoge";
System.out.println(str1.matches(pattern));
// false
String str2 = "1hoge";
System.out.println(str2.matches(pattern));
// false
String str3 = "hoge";
System.out.println(str3.matches(pattern));
// false
String str4 = "hoge1";
System.out.println(str4.matches(pattern));
// true
数字が含まれているか
String pattern = ".*[0-9].*";
String str1 = "ho1ge";
System.out.println(str1.matches(pattern));
// true
String str2 = "1hoge";
System.out.println(str2.matches(pattern));
// true
String str3 = "hoge";
System.out.println(str3.matches(pattern));
// false
String str4 = "hoge1";
System.out.println(str4.matches(pattern));
// true
このように正規表現で文字列の判定ができるので、文字列に対して柔軟な対応ができます。
![ペンタ](./xxxdeta-box/xxxOLD/0001.png)
正規表現はちょっと難しいけどチャレンジあるのみ!