将带破折号的字符串转换为驼峰大小写更新

2022-08-30 07:29:48

我想取一个这样的字符串:'this-is-a-string'并将其转换为:'thisIsAString':

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

    return $string;
}

我需要将“烤肉串”转换为“骆驼盒”。


答案 1

无需正则表达式或回调。几乎所有的工作都可以用ucwords完成:

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,则可以使用 lcfirst 而不是 strtolower。

更新

在 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');

答案 2

这可以非常简单地完成,通过使用接受分隔符作为参数的ucwords

function camelize($input, $separator = '_')
{
    return str_replace($separator, '', ucwords($input, $separator));
}

注意:需要 php 至少 5.4.32, 5.5.16


推荐