1. ホーム
  2. php

[解決済み] ダッシュを含む文字列をキャメルケースに変換する

2022-12-11 20:51:30

質問

次のような文字列を受け取りたい。this-is-a-string'をこのように変換したい。thisIsAString'に変換したい。

function dashesToCamelCase($string, $capitalizeFirstCharacter = false) {
    // Do stuff

    return $string;
}

ケバブケース(kebab-case")をキャメルケース(camelCase")に変換したいのですが、可能でしょうか?

どのように解決するのですか?

正規表現やコールバックは必要ありません。ほとんどすべての作業をucwordで行うことができます。

function dashesToCamelCase($string, $capitalizeFirstCharacter = false) 
{

    $str = str_replace(' ', '', ucwords(str_replace('-', ' ', $string)));

    if (!$capitalizeFirstCharacter) {
        $str[0] = strtolower($str[0]);
    }

    return $str;
}

echo dashesToCamelCase('this-is-a-string');

PHP >= 5.3 を使用している場合、strtolower の代わりに lcfirst を使用することができます。

更新情報

PHP 5.4.32/5.5.16 で ucwords に第二パラメータが追加され、最初にダッシュをスペースに変更する必要がなくなりました (Lars Ebert と PeterM の指摘に感謝します)。以下は、更新されたコードです。

function dashesToCamelCase($string, $capitalizeFirstCharacter = false) 
{

    $str = str_replace('-', '', ucwords($string, '-'));

    if (!$capitalizeFirstCharacter) {
        $str = lcfirst($str);
    }

    return $str;
}

echo dashesToCamelCase('this-is-a-string');