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

JavaScriptでハイフン区切りの文字列をキャメルケースに変換する方法

ハイフン区切りの文字列をキャメルケースに変換する

JavaScriptでは、ハイフン(-)で単語が区切られた文字列(ケバブケース)をキャメルケースに変換したい場面がよくあります。たとえば、CSSのプロパティ名を扱うときや、APIから受け取ったデータのキー名を整形するときなどです。

変換のイメージ

次のようなハイフン区切りの文字列があるとします。

const str = 'this-is-an-example';

この文字列をキャメルケースに変換すると、期待される出力は次のようになります。

const output = 'thisIsAnExample';

つまり、ハイフンを取り除き、2番目以降の各単語の頭文字を大文字にすればよいわけです。

実装コード

split()map()join() を組み合わせると、シンプルに実装できます。

const str = 'this-is-an-example';
const changeToCamel = str => {
    let newStr = '';
    newStr = str
    .split('-')
    .map((el, ind) => {
        return ind && el.length ? el[0].toUpperCase() + el.substring(1)
        : el;
    })
    .join('');
    return newStr;
};
console.log(changeToCamel(str));

コードの解説

  • split('-'):文字列をハイフンで分割し、['this', 'is', 'an', 'example'] という配列を作ります。
  • map():各単語に対して処理を行います。インデックス ind が0より大きい場合(=最初の単語以外)、先頭文字を toUpperCase() で大文字に変換します。
  • ind && el.length:インデックスが0でないこと、かつ要素が空文字でないことを確認しています。これにより、連続したハイフンや先頭・末尾のハイフンが含まれる文字列にも安全に対応できます。
  • join(''):加工済みの配列を結合し、1つの文字列に戻します。

出力結果

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

thisIsAnExample

正規表現を使った別のアプローチ

replace() と正規表現を組み合わせれば、さらに簡潔に書くこともできます。

const changeToCamel = str =>
  str.replace(/-([a-z])/g, (_, char) => char.toUpperCase());

console.log(changeToCamel('this-is-an-example')); // thisIsAnExample

この正規表現は「ハイフンの直後にある小文字1文字」にマッチし、その文字を大文字へ置き換えます。ハイフン自体もマッチの一部として消費されるため、結果から自動的に取り除かれます。

まとめ

ケバブケースからキャメルケースへの変換には、split() → map() → join() の流れを使う方法と、replace()+正規表現を使う方法の2通りが代表的です。どちらも短いコードで実用的なパフォーマンスを発揮するので、可読性やプロジェクトのコーディングスタイルに合わせて選択しましょう。

  1. JavaScriptで指定した文字数に文字列を切り詰める方法

    JavaScriptでは、長いテキストを一覧表示やプレビュー用に短く表示したい場面がよくあります。この記事では、文字列と数値を受け取り、指定された文字数を超える場合は文字列を切り詰めて末尾に「...」を付けて返す関数の実装方法を解説します。要件作成する関数は、文字列と数値の2つの引数を受け取ります。文字列の長さが指定された数値より大きい場合は、先頭から指定文字数分だけ切り取った文字列に「...」を連結して返します。切り詰める必要がない場合(元の文字列が指定文字数以下の場合)は、元の文字列をそのまま返します。コード例以下がその実装コードです。 { const { length: len

  2. JavaScriptで任意の記法の文字列をキャメルケースに変換する方法

    問題 JavaScriptで、通常の文・スネークケース・パスカルケースなどどんな記法で書かれた文字列でも受け取れる関数を作成し、その文字列をキャメルケース(camelCase)に変換することを考えます。 たとえば、関数への入力が次のようになっているとします。 入力 const str = New STRING; 期待される出力 const output = newString; サンプルコード 以下が実際のコードです。 const str = New STRING; const toCamelCase = (str = ) => { return str .re