Java
 Computer >> コンピューター >  >> プログラミング >> Java

【Java】文字列がboolean型かどうかを判定する方法を解説

はじめに:Booleanクラスの変換メソッド

Javaのjava.langパッケージに含まれるBooleanクラスには、文字列をboolean値へ変換するためのメソッドとして、parseBoolean()valueOf() の2種類が提供されています。

  • parseBoolean(String s) − 引数として文字列を受け取り、プリミティブ型のboolean値を返します。指定された文字列が「true」(大文字・小文字は問わない)であれば true を返し、null や「false」、それ以外の任意の値であれば false を返します。
  • valueOf(String s) − 引数として文字列を受け取り、その内容を解析した結果に基づいてBooleanクラスのオブジェクトを返します。コンストラクタを使わずにこのメソッドを利用することが推奨されています。指定された文字列が「true」であれば true を、そうでなければ false を返します。

サンプルプログラム

import java.util.Scanner;

public class VerifyBoolean {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        System.out.println("文字列を入力してください:");
        String str = sc.next();
        boolean result = Boolean.parseBoolean(str);
        System.out.println(result);
        boolean result2 = Boolean.valueOf(str);
        System.out.println(result2);
    }
}

実行結果1

文字列を入力してください:
true
true
true

実行結果2

文字列を入力してください:
false
false
false

これらのメソッドの限界

ただし、parseBoolean() にも valueOf() にも、与えられた文字列が本当に「true」なのかを検証する機能はありません。標準APIには、文字列がboolean型の値として有効かどうかを判定する専用のメソッドは存在しないため、if文や正規表現を使って自分でチェックする必要があります。

方法1:if文による判定

equalsIgnoreCase() メソッドを使えば、大文字・小文字を区別せずに文字列を比較できます。入力値が「true」または「false」のどちらかに一致するかを確認しましょう。

import java.util.Scanner;

public class VerifyBoolean {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        System.out.println("文字列を入力してください:");
        String str = sc.next();
        if (str.equalsIgnoreCase("true") || str.equalsIgnoreCase("false")) {
            System.out.println("入力された文字列はboolean型です");
        } else {
            System.out.println("入力された文字列はboolean型ではありません");
        }
    }
}

実行結果1

文字列を入力してください:
true
入力された文字列はboolean型です

実行結果2

文字列を入力してください:
false
入力された文字列はboolean型です

実行結果3

文字列を入力してください:
hello
入力された文字列はboolean型ではありません

方法2:正規表現による判定

Pattern クラスと Matcher クラスを利用して、正規表現「true|false」と完全一致するかどうかを確認する方法もあります。CASE_INSENSITIVE フラグを指定すれば、大文字・小文字の違いも吸収できます。

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class VerifyBoolean {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        System.out.println("文字列を入力してください:");
        String str = sc.next();
        Pattern pattern = Pattern.compile("true|false", Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(str);
        if (matcher.matches()) {
            System.out.println("入力された文字列はboolean型です");
        } else {
            System.out.println("入力された文字列はboolean型ではありません");
        }
    }
}

実行結果1

文字列を入力してください:
true
入力された文字列はboolean型です

実行結果2

文字列を入力してください:
false
入力された文字列はboolean型です

実行結果3

文字列を入力してください:
hello
入力された文字列はboolean型ではありません

まとめ

文字列を単純にboolean値へ変換したい場合は Boolean.parseBoolean() または valueOf() を使用します。一方、文字列がboolean型として有効かどうかを厳密に判定したい場合は、if文による equalsIgnoreCase() の比較、あるいは正規表現によるマッチングを行いましょう。用途に応じて適切な方法を選ぶことが重要です。

  1. Pythonで変数が文字列型(str)かどうかを判定する方法

    isinstance()関数を使った文字列型の判定Pythonでは、組み込み関数 isinstance(var, class) を使うことで、変数 var が指定したクラスのインスタンスであるかどうかを簡単に確認できます。変数が文字列型かどうかを判定したい場合も、この関数を使うのが最も一般的で推奨される方法です。Python 2.x の場合Python 2.x では、str(バイト文字列)と unicode の両方の基底クラスとして basestring が定義されています。そのため、basestring を使えば、どちらの文字列型にも対応した判定が可能です。>>> s =

  2. Javaで文字列を比較する方法|equals()とequalsIgnoreCase()の使い分けを徹底解説

    Javaで文字列の等価性を比較する際は、Stringクラスが提供するequalsメソッドまたはequalsIgnoreCaseメソッドを使用するのが基本です。この記事では、それぞれのメソッドの使い方に加えて、==演算子で文字列を比較してはいけない理由についても詳しく解説します。 equals()メソッドで文字列を比較する 2つの文字列を比較し、大文字と小文字の違いまで厳密に判定したい場合はequals()メソッドを使用します。 次のコード例では、2つのStringインスタンスが大文字小文字を含むすべての文字において一致しているかどうかを判定しています。 public class Compare