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

JavaScriptで文字列配列を結合し、空白をハイフン「-」に置き換える方法

はじめに

今回は、文字列の配列を受け取り、配列内のすべての文字列を連結したうえで、空白をハイフン「-」に置き換えて結果の文字列を返すJavaScript関数を作成します。

たとえば、次のような配列があったとします。

const arr = ["QA testing promotion ", " Twitter ", "Facebook ", "Test"];

この場合、期待される出力は以下のとおりです。

const output = "QA-testing-promotion-Twitter-Facebook-Test";

実装のポイント

まず join('') メソッドを使って配列内のすべての文字列を1つの文字列に連結します。その後、連結された文字列を先頭から順に走査し、空白文字を検出したときは「直前の文字が空白でない場合のみ」ハイフン「-」を追加します。これにより、連続する複数の空白が含まれていても、余分なハイフンが挿入されるのを防ぐことができます。

コード例

以下が実際のコードです。

const arr = ["QA testing promotion ", " Twitter ", "Facebook ", "Test"];
const joinArr = arr => {
    const arrStr = arr.join('');
    let res = '';
    for(let i = 0; i < arrStr.length; i++){
        if(arrStr[i] === ' '){
            if(arrStr[i-1] && arrStr[i-1] !== ' '){
                res += '-';
            };
            continue;
        }else{
            res += arrStr[i];
        };
    };
    return res;
};
console.log(joinArr(arr));

出力

コンソールには次のように表示されます。

QA-testing-promotion-Twitter-Facebook-Test

正規表現を使ったより簡潔な書き方

ループ処理を書かずに、正規表現を組み合わせることで同じ結果を短いコードで実現することもできます。join('') で連結した後、trim() で両端の空白を除去し、replace(/\s+/g, '-') で連続する空白(スペース・タブ・改行など)をまとめてハイフンに置換します。

const arr = ["QA testing promotion ", " Twitter ", "Facebook ", "Test"];
const output = arr.join('').trim().replace(/\s+/g, '-');
console.log(output); // QA-testing-promotion-Twitter-Facebook-Test

どちらの方法でも目的の結果は得られますが、実務ではコード量が少なく可読性の高い正規表現版が好まれることが多いです。ただし、空白以外にも特定の記号だけを置換したいなど細かい制御が必要な場合は、ループによる処理の方が柔軟に対応できます。

  1. JavaScriptのArray.join()メソッドで配列を文字列に変換する方法

    JavaScriptのArray.join()メソッドは、配列内の個々の要素をすべて連結し、ひとつの文字列へと変換するために使用されるメソッドです。引数として区切り文字(セパレータ)を指定でき、指定しない場合はデフォルトでカンマ「,」が使われます。 構文は次のとおりです。 arr.join(separator) separatorには、連結時に各要素の間に挿入したい文字列を渡します。空文字列「」を指定すれば、要素間に何も挟まずにそのまま連結されます。 コード例 以下は、Array.join()メソッドを使用して、バラバラのアルファベットを「HELLO WORLD」という文字列に連結するサンプル

  2. JavaScriptの配列を文字列に変換する方法【toString()の使い方を解説】

    JavaScriptで配列の要素をひとつの文字列として扱いたい場面はよくあります。そんなときに便利なのがtoString()メソッドです。このメソッドを使うと、配列の各要素がカンマ(,)で区切られたひとつの文字列に変換されます。以下は、ボタンをクリックすると配列の中身が文字列として画面に表示されるシンプルなサンプルコードです。サンプルコード<!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-