【问题标题】:Convert hyphen delimited string to camelCase?将连字符分隔的字符串转换为驼峰式?
【发布时间】:2011-12-25 20:35:21
【问题描述】:

例如:

abc-def-xyzabcDefXyz

the-foootheFooo

等等

执行此 PHP 的最有效方法是什么?

这是我的看法:

$parts = explode('-', $string);
$new_string = '';

foreach($parts as $part)
  $new_string .= ucfirst($part);

$new_string = lcfirst($new_string);

但我有一种感觉,它可以用更少的代码来完成 :)

ps:祝大家节日快乐!! :D

【问题讨论】:

    标签: php string camelcasing


    【解决方案1】:
    $parts = explode('-', $string);
    $parts = array_map('ucfirst', $parts);
    $string = lcfirst(implode('', $parts));
    

    您可能希望将第一行替换为 $parts = explode('-', strtolower($string));,以防有人在连字符分隔的字符串中使用大写字符。

    【讨论】:

      【解决方案2】:
      $subject = 'abc-def-xyz';
      $results = preg_replace_callback ('/-(.)/', create_function('$matches','return strtoupper($matches[1]);'), $subject);
      
      echo $results;
      

      【讨论】:

        【解决方案3】:

        如果可行,为什么不使用它?除非您正在解析大量文本,否则您可能不会注意到其中的差异。

        我唯一看到的是,在您的代码中,第一个字母也会大写,所以也许您可以添加以下内容:

        foreach($parts as $k=>$part)
          $new_string .= ($k == 0) ? strtolower($part) : ucfirst($part);
        

        【讨论】:

          【解决方案4】:
          str_replace('-', '', lcfirst(ucwords('foo-bar-baz', '-'))); // fooBarBaz
          

          ucwords 接受一个单词分隔符作为第二个参数,所以我们只需要传递一个连字符,然后用lcfirst 小写第一个字母,最后用str_replace 删除所有连字符。

          【讨论】:

            猜你喜欢
            • 2012-05-12
            • 2011-10-03
            • 1970-01-01
            • 1970-01-01
            • 2015-07-07
            • 2023-02-20
            • 2017-03-13
            • 2011-02-27
            相关资源
            最近更新 更多