文字列の判定

アイキャチ画像
2023/01/23
2023/01/23
9h9uZcCD

Javaで文字列を判定する方法をいくつかご紹介します。

equalsメソッド

2つの文字列が同じ文字列か判定する場合はequalsメソッドを使います!

文字列の判定に、等価記号を使ってしまうケースがありますがこれは間違いです。

なぜならJavaの等価記号(==)は同一性を評価する為、このようなことが起きます。

なので他の言語では『True』になる条件でも、Javaでは『False』になってしまう場合があるので文字列を判定する際はそれぞれの性質を理解した上で行うようにしましょう。

【役割】
文字列の同値性を判定するメソッド

【使い方】
 判定対象.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は同じ文字列をデータとして持っているので、そこを評価すると期待通りの結果を得ることができます。

ペンタ

Javaを覚えたての時は間違えやすいので注意しましょう!

isEmptyメソッド

JavaのStringクラスには空文字からもじかどうか判定するisEmptyメソッドがあります。

【使い方】
 判定対象.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

このように文字列が空文字からもじか判定することができ便利ですが、値がNULLの場合はエラーとなってしまうので注意してください。

ペンタ

場合によってNULLチェックをしよう!

isBlankメソッド

isBlankメソッドを使うと、空白文字列かどうか確認することができます。

【使い方】
 判定対象.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

このように文字列が空文字からもじか空白か判定することができ便利ですが、isEmptyメソッド同様値がNULLの場合はエラーとなってしまうので注意してください。

ペンタ

場合によってNULLチェックをしよう!

matchesメソッド

matchesメソッドを使うと対象の文字列が正規表現で一致するか判定することができます。

【使い方】
 判定対象.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

このように正規表現で文字列の判定ができるので、文字列に対して柔軟な対応ができます。

ペンタ

正規表現はちょっと難しいけどチャレンジあるのみ!