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

JavaScriptで数値と文字数が一致する文字列を検証する方法


問題

文字列 str を引数として受け取るJavaScript関数を作成することを考えます。この関数は、文字列内の英字部分を、その直前にある数字に基づいて検証する必要があります。

具体的には、文字列を数字で分割し、各数字とそれに続く部分文字列の文字数を比較します。すべての組み合わせが一致していれば、その文字列は有効であるとして true を返し、一箇所でも不一致があれば false を返します。

例えば、以下のような文字列を見てみましょう。

5hello4from2me

この文字列に対しては、true を返す必要があります。

なぜなら、数字で分割すると「hello」「from」「me」という3つの部分文字列になり、それぞれの文字数(5文字、4文字、2文字)が直前の数字と完全に一致しているからです。

解決策

以下は、この問題を解決するための実装コードの一例です。

const str = '5hello4from2me';
const validateString = (str = '') => {
    const lenArray = [];
    let temp = '';
    for(let i = 0; i < str.length; i++){
        const el = str[i];
        if(+el){
            lenArray.push([+el, '']);
        }else{
            const { length: len } = lenArray;
            lenArray[len - 1][1] += el;
        };
    };
    return lenArray.every(sub => sub[0] === sub[1].length);
};
console.log(validateString(str));

コードの仕組み

このコードがどのように動作するのか、順を追って見ていきましょう。

  1. 文字列を1文字ずつ走査し、数字であれば新しいエントリ [数字, ''] を配列 lenArray に追加します。
  2. 英字であれば、直前に追加されたエントリの2番目の要素(文字列部分)にその文字を連結していきます。
  3. 最後に every() メソッドを使用して、すべてのエントリにおいて、数字の値と実際の文字数が一致しているかどうかを確認します。

なお、単一桁の数字しか扱えない点に注意が必要です。2桁以上の数字(例:「12abc」)に対応させたい場合は、正規表現や連続した数字の判定処理を追加して拡張できます。

出力

上記のコードを実行すると、コンソールには以下のように出力されます。

true
  1. JavaScriptでスペース区切りの文字列内の数値を合計する方法

    問題スペースで区切られた整数を含む文字列を受け取り、その中の各整数を数値に変換したうえで、合計値を返すJavaScript関数を作成する必要があります。解決のアプローチ基本的な処理の流れは次の3ステップです。split( ) メソッドで、文字列をスペースを基準に配列へ分割するmap(Number) で、配列の各要素を数値へ変換するreduce() を使って、配列内のすべての数値を合計するコード例以下が実際のコードです。const str = 1 5 12 76 2; { { acc + val);        r

  2. MySQLで文字列と数値を連結する方法|CONCAT()関数の使い方を解説

    MySQLで文字列と数値を連結したい場合、CONCAT()関数を使用します。CONCAT()は複数の引数を受け取り、それらを1つの文字列として結合する便利な関数です。ここでは、実際にテーブルを作成し、文字列カラムと数値カラムを連結する手順を順を追って解説します。1. サンプルテーブルの作成まず、文字列型の「Name」カラムと整数型の「Age」カラムを持つテーブルを作成します。mysql> create table DemoTable682( Name varchar(100), Age int ); Query OK, 0 rows affected (0.49 sec)