Java で大文字と小文字を無視する

Mohammad Irfan 2023年10月12日
  1. Java で toUppercase() メソッドを使用してケースを無視する
  2. Java で toLowerCase() メソッドを使用してケースを無視する
  3. Java で equalsIgnoreCase() メソッドを使用してケースを無視する
  4. Java で compareToIgnoreCase() メソッドを使用してケースを無視する
Java で大文字と小文字を無視する

このチュートリアルでは、Java で文字列の大文字と小文字を無視する方法を紹介します。

文字列は文字のシーケンスであり、Java では、いくつかのユーティリティメソッドも含むクラスです。文字列は小文字または大文字、あるいはその両方を組み合わせたものにすることができます。これは問題ありませんが、各文字には一意の Unicode 値があるため、文字列を比較するときに問題が発生することがあります。

この記事では、大文字と小文字を区別せずに文字列を処理する方法を学習します。equals() メソッドを使用して 2つの文字列を比較することはよく知っています。このメソッドは、大文字と小文字を含め、両方の文字列が等しい場合に true を返します。

たとえば、以下の例を見てください。

import java.lang.Object;
import java.util.*;
public class SimpleTesting {
  public static void main(String args[]) {
    String a = "SimpleTesting";
    String b = "SimpleTesting";
    String c = "SimpleTesting";
    a.equals(b); // return false
    a.equals(c); // returns true
  }
}

これにより、大文字と小文字を区別せずに 2つの文字列を比較する方法があるかどうか疑問に思います。

そうですね、Java はこのタスクを達成するためのさまざまなアプローチを提供してくれます。ここでは、これらのアプローチについて詳しく説明します。

  • toUppercase() メソッドを使用してケースを無視します
  • toLowerCase() メソッドを使用してケースを無視します
  • equalsIgnoreCase() メソッドを使用してケースを無視します
  • compareToIgnoreCase() メソッドを使用してケースを無視します

Java で toUppercase() メソッドを使用してケースを無視する

このアプローチでは、最初に両方の文字列を大文字に変換してから、equals() メソッドを呼び出します。このメソッドのシグネチャは次のとおりです。

public String toUpperCase()

このメソッドは、デフォルトのロケールに基づいて、すべての文字列文字を大文字に変換します。これは、デフォルトのロケールが Locale.ENGLISH または Locale.US の場合にのみ、icecreamICECREAM に変換されることを意味します。

デフォルトのローカルがこれらの文字を認識しない別の国または言語に設定されている場合、予期しない結果が生じる可能性があります。これを回避するために、ロケールを関数呼び出しに渡すことができます。

次に、Java の toUpperCase() メソッドと equals() メソッドを使用して 2つの文字列を比較してみましょう。以下のコードを見てください。

import java.lang.Object;
import java.util.*;
public class SimpleTesting {
  public static void main(String args[]) {
    String desert1 = "icecream";
    String desert2 = "IceCream";

    // converting to both the strings to upper case
    String desert1_converted = desert1.toUpperCase();
    String desert2_converted = desert2.toUpperCase();

    // comparing both the desert
    boolean same_or_not1 = desert1_converted.equals(desert2_converted);
    boolean same_or_not2 = desert1.equals(desert2);

    System.out.println("Comparison with conversion: " + same_or_not1);
    System.out.println("Comparison without conversion: " + same_or_not2);
  }
}

出力:

Comparison with conversion: true
Comparison without conversion: false

上記の例では、デフォルトのロケールは英語であるため、toUpperCase() はロケールを渡さなくても正常に機能します。

Java で toLowerCase() メソッドを使用してケースを無視する

このメソッドは、両方の文字列のすべての文字を小文字に変換することを除いて、前のメソッドと同じです。メソッドのシグネチャは次のとおりです。

public String toLowerCase()

デフォルトのロケールに従って、このプロシージャは文字列内のすべての文字を小文字に変更します。

これは、デフォルトのロケールが Locale.ENGLISH または Locale.US の場合、ICECREAMicecream に変換されることを意味します。デフォルトのローカルがこれらの文字を認識しない別の国または言語に設定されている場合、予期しない結果が生じる可能性があります。

これを回避するために、ロケールを関数呼び出しの引数として渡すことができます。この機能がどのように動作するかを詳しく見てみましょう。

次に、Java の toLowerCase() メソッドと equals() メソッドを使用して 2つの文字列を比較してみましょう。以下のコードを見てください。

import java.lang.Object;
import java.util.*;
public class SimpleTesting {
  public static void main(String args[]) {
    String desert1 = "icecream";
    String desert2 = "IceCream";

    // converting to both the strings to lower case
    String desert1_converted = desert1.toLowerCase();
    String desert2_converted = desert2.toLowerCase();

    // comparing both the desert
    boolean same_or_not1 = desert1_converted.equals(desert2_converted);
    boolean same_or_not2 = desert1.equals(desert2);

    System.out.println("Comparison with conversion: " + same_or_not1);
    System.out.println("Comparison without conversion: " + same_or_not2);
  }
}

出力:

Comparison with conversion: true
Comparision without conversion: false

Java で equalsIgnoreCase() メソッドを使用してケースを無視する

このメソッドは、文字列の大文字と小文字を無視することを除いて、equals() メソッドと同じです。まず、メソッドのシグネチャを見てみましょう。

public boolean equalsIgnoreCase(String anotherString)

このメソッドは、大文字と小文字を区別せずに 2つの文字列が等しい場合、true を返します。

2つの文字列の長さが同じで、2つの文字列の対応する文字が同じである場合、大文字と小文字は区別されず、等しいと見なされます。この方法によると、ICECREAMicecream は同じです。したがって、true が返されます。

以下のコードを見て、それがどのように機能するかを理解してください。

import java.lang.Object;
import java.util.*;
public class SimpleTesting {
  public static void main(String args[]) {
    String desert1 = "icecream";
    String desert2 = "IceCream";

    // comparing both the deserts
    boolean same_or_not1 = desert1.equalsIgnoreCase(desert2);

    System.out.println("Comparison : " + same_or_not1);
  }
}

出力:

Comparison : true

Java で compareToIgnoreCase() メソッドを使用してケースを無視する

このアプローチでは、大文字と小文字の違いを無視して、辞書式に 2つの文字列を比較します。このメソッドは、最初の 2つの等しくない文字の差に等しい整数を返します。

その署名は次のとおりです。

public int compareToIgnoreCase(String str)

両方の文字列が同等の場合、0 が返されます。以下のサンプルコードを見てください。

import java.lang.Object;
import java.util.*;
public class SimpleTesting {
  public static void main(String args[]) {
    String desert1 = "icecream";
    String desert2 = "IceCream";

    // comparing both the deserts
    int same_or_not1 = desert1.compareToIgnoreCase(desert2);

    System.out.println("Comparision : " + same_or_not1);
  }
}

出力:

Comparision : 0

関連記事 - Java String