【JavaScript】文字列から頭字語(アクロニム)を生成して返す方法
文字列を唯一の引数として受け取るJavaScript関数を作成する必要があります。
この関数は、引数として渡された文字列フレーズをもとに頭字語(アクロニム)を構築し、その結果を返します。
頭字語を構築する際のルールは、大文字で始まる単語のみを対象とすることです。小文字で始まる単語は頭字語に含めません。
例
たとえば、入力文字列が以下の場合を考えてみましょう。
const str = 'Polar Satellite Launch Vehicle';
このとき、期待される出力は次のとおりです。
const output = 'PSLV';
サンプルコード
const str = 'Polar Satellite Launch Vehicle';
const buildAcronym = (str = '') => {
const strArr = str.split(' ');
let res = '';
strArr.forEach(el => {
const [char] = el;
if (char === char.toUpperCase() && char !== char.toLowerCase()) {
res += char;
};
});
return res;
};
console.log(buildAcronym(str));
console.log(buildAcronym('Bachelor of Science'));
コードの解説
このコードの処理の流れは以下のとおりです。
- split(' '):文字列をスペースで区切り、単語ごとの配列に変換します。
- 分割代入(const [char] = el):各単語の先頭1文字を取り出します。
- 大文字判定:
char === char.toUpperCase() && char !== char.toLowerCase()という条件で、対象の文字が「英字の大文字」であることを確認しています。数字や記号は大文字・小文字の変換で変化しないため、自動的に除外されます。 - 条件を満たした文字だけを変数
resに連結し、最終的な頭字語として返します。
出力結果
コンソールには以下のように表示されます。
PSLV BS
より堅牢な実装(改善版)
上記のコードでは、文字列内に連続したスペースが含まれる場合、空の要素が生まれてエラー(TypeError)が発生する可能性があります。filter(Boolean) や正規表現 /\s+/ を組み合わせると、より安全に実装できます。
const buildAcronym = (str = '') =>
str.split(/\s+/)
.filter(Boolean)
.map(word => word[0])
.filter(c => c === c.toUpperCase() && c !== c.toLowerCase())
.join('');
この書き方なら、余分な空白があっても正しく頭字語を抽出でき、コードも簡潔になります。
-
JavaScriptのconst宣言とは?再代入できない変数の基本と使い方を解説
JavaScriptのconst宣言は、値を再代入することも後から再宣言することもできない変数を作成するための構文です。constはES2015(ES6)で導入されました。 const宣言の主な特徴 一度値を代入すると、別の値に再代入することはできません。 同じ名前の変数を同じスコープ内で再宣言するとエラーになります。 宣言時に必ず初期値を代入する必要があります。 ブロックスコープ({}内でのみ有効)を持ちます。 それでは、JavaScriptにおけるconst宣言の実際のコードを見ていきましょう。 サンプルコード <!DOCTYPE html> <html>
-
JavaScriptで文字列内の文字を英字・数字・特殊文字に再グループ化する方法
問題文字列 str を第一引数(唯一の引数)として受け取る JavaScript 関数を作成する必要があります。この文字列には、次の3種類の文字が含まれる可能性があります。英字:(A-Z)、(a-z)数字:0〜9特殊文字:上記以外のすべての文字関数は文字列を先頭から順に走査し、ちょうど3つの要素からなる配列を構築します。1番目の要素には文字列に含まれるすべての英字、2番目には数字、3番目には特殊文字を格納し、それぞれ元の文字列内での出現順(相対的な順序)を維持します。最後にこの配列を返します。例えば、関数への入力が次の場合を考えてみましょう。入力const str = thi!1s is S@