JavaScriptで文字列内のアルファベットの数を数える方法
今回は、文字列を受け取り、その中に含まれるアルファベット(大文字・小文字問わず)の数を数えるJavaScript関数を作成します。
例えば、入力文字列が次のような場合を考えてみましょう。
const str = 'this is a string!';
この場合の出力は次のようになります。
13
スペースや記号(!)はアルファベットではないためカウント対象外となり、純粋な英字だけが数えられます。
実装コード
const str = 'this is a string!';
// 文字がアルファベットかどうかを判定する関数
const isAlpha = char => {
const legend = 'abcdefghijklmnopqrstuvwxyz';
return legend.includes(char);
};
// 文字列内のアルファベットの数を数える関数
const countAlphabets = (str = '') => {
let count = 0;
for(let i = 0; i < str.length; i++){
if(!isAlpha(str[i])){
continue;
}
count++;
}
return count;
};
console.log(countAlphabets(str));
出力結果
コンソールには以下のように表示されます。
13
コードの解説
処理の流れはシンプルです。
- isAlpha関数: 小文字のアルファベット一覧(a〜z)の中に、判定したい文字が含まれるかどうかを includes() メソッドで確認します。
- countAlphabets関数: 文字列を先頭から1文字ずつチェックし、アルファベットであればカウンターを1つ増やします。それ以外の文字は continue でスキップします。
大文字にも対応させた改良版
上記のコードは小文字しか判定できないため、「Hello World」のように大文字を含む文字列では正確な結果が得られません。正規表現を使えば、この問題を簡潔に解決できます。
const str = 'This is a String!';
// 大文字・小文字どちらのアルファベットでも true を返す
const isAlpha = char => /[a-z]/i.test(char);
const countAlphabets = (str = '') => {
let count = 0;
for(const char of str){
if(isAlpha(char)){
count++;
}
}
return count;
};
console.log(countAlphabets(str)); // 13
正規表現 /[a-z]/i の末尾にある i フラグは、大文字と小文字を区別しないことを意味します。これにより、英字がどのように混在していても正しくカウントできる、より堅牢な実装になります。
-
JavaScriptのconst宣言とは?再代入できない変数の基本と使い方を解説
JavaScriptのconst宣言は、値を再代入することも後から再宣言することもできない変数を作成するための構文です。constはES2015(ES6)で導入されました。 const宣言の主な特徴 一度値を代入すると、別の値に再代入することはできません。 同じ名前の変数を同じスコープ内で再宣言するとエラーになります。 宣言時に必ず初期値を代入する必要があります。 ブロックスコープ({}内でのみ有効)を持ちます。 それでは、JavaScriptにおけるconst宣言の実際のコードを見ていきましょう。 サンプルコード <!DOCTYPE html> <html>
-
JavaScriptで一致する部分文字列(部分列)の数を効率的に数える方法
問題JavaScriptで、第1引数に文字列 str、第2引数に文字列の配列 arr を受け取る関数を作成します。この関数は、配列内の各要素 arr[i] のうち、文字列 str の「部分列」となっているものの個数を数えて返す必要があります。ここでの「部分列」とは、元の文字列から0個以上の文字を削除して得られる文字列であり、必ずしも連続している必要はない点に注意してください。これは「部分文字列」とは異なる概念です。例として、次のような入力が与えられた場合を考えてみましょう。入力const str = klmnop; const arr = [k, ll, klp, klo];出力const o