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

JavaScriptで大文字・小文字を区別せずに文字列を比較する方法

JavaScriptでは、2つの文字列を引数として受け取り、大文字と小文字の違いを無視して両者が等しいかどうかを判定する関数が必要になる場面があります。例えば、ユーザー入力の検証や検索機能などでは、「Done」と「done」を同じ文字列として扱いたいケースがよくあります。

実現したいこと

次のような動作を目指します。

areEqual('done', 'DOne') → true を返す

基本的な実装方法

最もシンプルな方法は、toLowerCase() メソッドを使って両方の文字列を小文字に変換してから比較することです。

const str1 = 'done';
const str2 = 'DOne';

const isEqualIgnoreCase = (str1 = '', str2 = '') => {
  const lower1 = str1.toLowerCase();
  const lower2 = str2.toLowerCase();
  return lower1 === lower2;
};

console.log(isEqualIgnoreCase(str1, str2));

実行結果

コンソールには次のように出力されます。

true

コードの解説

  • toLowerCase(): 文字列をすべて小文字に変換した新しい文字列を返します。元の文字列は変更されません(文字列は不変です)。
  • 厳密等価演算子(===): 型の変換を行わずに値を比較するため、意図しない型強制によるバグを防げます。

より堅牢な方法:localeCompare() の活用

単純な小文字化では対応しきれない特殊なケース(ドイツ語の「ß」やトルコ語の「İ」など、ロケールによって大文字小文字の挙動が異なる文字)を考慮したい場合は、localeCompare() を使う方法もあります。

const isEqualIgnoreCase = (str1 = '', str2 = '') => {
  return str1.localeCompare(str2, undefined, { sensitivity: 'accent' }) === 0;
};

console.log(isEqualIgnoreCase('done', 'DOne')); // true

sensitivity: 'accent' を指定すると、大文字・小文字の違いは無視されますが、アクセント記号などの違いは区別されます。

まとめ

大文字・小文字を区別せずに文字列を比較する場合は、toLowerCase()(または toUpperCase())で正規化してから === で比較するのが基本です。多言語対応が必要なアプリケーションでは、localeCompare()sensitivity オプションを活用すると、より正確な比較が可能になります。用途に応じて適切な方法を選択しましょう。

  1. 【Java】大文字と小文字を区別せずに文字列を比較する方法を解説

    Javaでは、いくつかの異なる方法で文字列を比較することができます。それぞれ特徴が異なるため、用途に応じて適切な方法を選ぶことが重要です。 compareTo()メソッドを使う方法:2つの文字列を辞書順(Unicode値ベース)に比較し、大小関係まで判定できます。 == 演算子を使う方法:変数の参照(オブジェクトの同一性)を比較するため、値の比較には不向きです。 equals()メソッドを使う方法:大文字・小文字を含めた文字列の内容そのものを比較できます。 以下、それぞれの方法を詳しく見ていきましょう。 1. compareTo()メソッドで比較する compareTo()メソッドは、2

  2. Pythonで大文字と小文字を区別しない文字列比較を行う方法

    Pythonで大文字と小文字を区別せずに文字列を比較したい場合は、lower()メソッドを使って両方の文字列をすべて小文字に変換してから比較するのが最も一般的で簡単な方法です。サンプルコード以下は、大文字と小文字を区別しない文字列比較の例です。string1 = Star Wars string2 = star wars if string1.lower() == string2.lower(): print(2つの文字列は大文字と小文字を無視すると一致します) else: print(2つの文字列は一致しません)このコードでは、string1とstring2の両方にlowe