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

JavaScriptで文字列が回文かどうか判定する方法(句読点・大文字小文字への対応)

与えられた文字列が回文(パリンドローム)であれば true を、そうでなければ false を返すJavaScript関数の作成方法を紹介します。

回文判定時の注意点

文字列が回文かどうかを正しく検証するためには、以下の条件を考慮する必要があります。

  • 句読点や記号は削除し、すべての文字を小文字に変換してから判定を行います。

  • 大文字と小文字は区別しません。たとえば「racecar」「RaceCar」「race CAR」なども、すべて同じ回文として扱います。

コード例

以下が実際のコードです。

const str = 'dr. awkward';
const isPalindrome = (str = '') => {
    const regex = /[^A-Za-z0-9]/g;
    str = str.toLowerCase().replace(regex, '');
    let len = str.length;
    for (let i = 0; i < len/2; i++) {
        if (str[i] !== str[len - 1 - i]) {
            return false;
        };
    };
    return true;
};
console.log(isPalindrome(str));

コードの解説

このコードの処理の流れは以下の通りです。

  • 正規表現によるクリーニング:/[^A-Za-z0-9]/g により、英数字以外の文字(句読点やスペースなど)をすべて削除します。
  • 小文字への統一:toLowerCase() で大文字と小文字の違いをなくし、「RaceCar」と「racecar」を同一視できるようにします。
  • 前後からの比較ループ:文字列の長さの半分までループし、先頭から i 番目の文字と末尾から i 番目の文字を比較します。1つでも異なる文字があれば、即座に false を返して処理を終了します。
  • 全比較の成功:ループが最後まで完了すれば前後対称、すなわち回文であるため true を返します。

例として「dr. awkward」の場合、句読点とスペースを除去して小文字化すると「drawkward」になります。これを逆から読んでも「drawkward」となり一致するため、結果は回文と判定されます。

実行結果

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

true
  1. JavaScriptで文字列を検索する方法【search()メソッドの使い方を解説】

    JavaScriptで文字列を検索する方法 JavaScriptで文字列の中から特定の文字列を探すには、search()メソッドを使用します。このメソッドは、引数に渡した文字列(または正規表現)が対象の文字列内で最初に一致した位置(インデックス)を返し、見つからなかった場合は -1 を返します。 以下は、JavaScriptで文字列を検索するサンプルコードです。 サンプルコード <!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8" />

  2. C#で文字列が回文(パリンドローム)かどうかを判定する方法

    回文(パリンドローム)とは、前から読んでも後ろから読んでも同じになる文字列のことです。例えば「Level」や「madam」などが代表的な例です。この記事では、C#を使って文字列が回文かどうかを判定する方法を解説します。回文判定の基本的な流れまず、判定対象となる文字列を用意します。str = Level;次に、ToCharArray() メソッドを使って文字列を文字配列に変換します。これにより、各文字に個別にアクセスできるようになります。char[] ch = str.ToCharArray();続いて、Array.Reverse() メソッドで配列の要素順を反転させます。Array.Rever