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

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文字以上の連続する空白」に一致する正規表現で、タブや改行などもまとめて除去できるため、実務ではこちらの方が短く堅牢なコードになります。

  1. JavaScriptで配列の値に基づいて文字列の文字をシフトする方法

    本記事では、小文字の英字のみで構成された文字列に対して、配列内の数値に従って各文字をシフトするJavaScript関数の実装方法を解説します。 問題の概要 まず、「1単位のシフト」を次のように定義します。ある文字を、アルファベット順でその直後の文字に置き換えること。これには循環(ラップアラウント)も含まれます。つまり、「z」の次の文字は「a」となります。 今回作成する関数は、以下の2つの引数を受け取ります。 str: 小文字英字のみを含む文字列(第1引数) arr: strと同じ長さを持つ数値の配列(第2引数) 関数は、元の文字列の各文字を、配列arr内の同じ位置にある数値の分だけ

  2. 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