JavaScriptで文字列から空白を除去し、カンマ区切りで分割して配列を作成する方法
文字列のトリミングと分割による配列の生成
たとえば、次のように空白を含むカンマ区切りの文字列があったとします。
const str = "a, b, c, d , e";
ここで求められているのは、このような文字列を受け取って、含まれるすべての空白文字(ホワイトスペース)を除去し、その後カンマを区切り文字として文字列を分割して、リテラルの配列を作成して返すJavaScript関数です。
実装例
コードは以下のようになります。
const str = "a, b, c, d , e";
const shedAndSplit = (str = '') => {
const removeSpaces = () => {
let res = '';
for(let i = 0; i < str.length; i++){
const el = str[i];
if(el === ' '){
continue;
};
res += el;
};
return res;
};
const res = removeSpaces();
return res.split(',');
};
console.log(shedAndSplit(str));処理の流れ
この関数では、内部関数 removeSpaces() が for ループを使って文字列を1文字ずつ走査し、空白文字に該当する要素は continue でスキップしながら新しい文字列を組み立てます。これにより、元の文字列から空白だけが取り除かれます。
その後、split(',') メソッドによってカンマを基準に文字列が分割され、余計な空白を含まないきれいな配列が返されます。
出力結果
コンソールには次のように表示されます。
[ 'a', 'b', 'c', 'd', 'e' ]
正規表現を使った簡潔な代替案
よりシンプルに記述したい場合は、replace() メソッドと正規表現を組み合わせる方法も有効です。
const shedAndSplitSimple = (str = '') => str.replace(/\s+/g, '').split(',');
console.log(shedAndSplitSimple(str)); // [ 'a', 'b', 'c', 'd', 'e' ]/\s+/g は「1文字以上の連続する空白」に一致する正規表現で、タブや改行などもまとめて除去できるため、実務ではこちらの方が短く堅牢なコードになります。
-
JavaScriptで配列の値に基づいて文字列の文字をシフトする方法
本記事では、小文字の英字のみで構成された文字列に対して、配列内の数値に従って各文字をシフトするJavaScript関数の実装方法を解説します。 問題の概要 まず、「1単位のシフト」を次のように定義します。ある文字を、アルファベット順でその直後の文字に置き換えること。これには循環(ラップアラウント)も含まれます。つまり、「z」の次の文字は「a」となります。 今回作成する関数は、以下の2つの引数を受け取ります。 str: 小文字英字のみを含む文字列(第1引数) arr: strと同じ長さを持つ数値の配列(第2引数) 関数は、元の文字列の各文字を、配列arr内の同じ位置にある数値の分だけ
-
JavaScriptで0と1を使って形成できる文字列の数を動的計画法で求める方法
問題概要 「0」と「1」のみで構成された文字列の配列 arr を第1引数として受け取るJavaScript関数を作成します。 第2引数と第3引数には、それぞれ2つの整数 m と n が渡されます。この関数の役割は、配列 arr の中から、最大 m 個の「0」と最大 n 個の「1」を使用して形成できる文字列がいくつあるかを求めることです。 入力例 const arr = ["10", "0001", "111001", "1", "0"]; const m = 5, n = 3; 出力例 con