将连字符分隔的字符串转换为驼峰命名法?

发布于 2024-12-22 15:08:50 字数 401 浏览 2 评论 0原文

例如:

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

For example:

abc-def-xyz to abcDefXyz

the-fooo to theFooo

etc.

What's the most efficient way to do this PHP?

Here's my take:

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

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

$new_string = lcfirst($new_string);

But i have a feeling that it can be done with much less code :)

ps: Happy Holidays to everyone !! :D

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

心是晴朗的。 2024-12-29 15:08:50
$parts = explode('-', $string);
$parts = array_map('ucfirst', $parts);
$string = lcfirst(implode('', $parts));

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

$parts = explode('-', $string);
$parts = array_map('ucfirst', $parts);
$string = lcfirst(implode('', $parts));

You might want to replace the first line with $parts = explode('-', strtolower($string)); in case someone uses uppercase characters in the hyphen-delimited string though.

梦幻的味道 2024-12-29 15:08:50
$subject = 'abc-def-xyz';
$results = preg_replace_callback ('/-(.)/', create_function('$matches','return strtoupper($matches[1]);'), $subject);

echo $results;
$subject = 'abc-def-xyz';
$results = preg_replace_callback ('/-(.)/', create_function('$matches','return strtoupper($matches[1]);'), $subject);

echo $results;
后来的我们 2024-12-29 15:08:50

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

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

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

If that works, why not use it? Unless you're parsing a ginormous amount of text you probably won't notice the difference.

The only thing I see is that with your code the first letter is going to get capitalized too, so maybe you could add this:

foreach($parts as $k=>$part)
  $new_string .= ($k == 0) ? strtolower($part) : ucfirst($part);
鲸落 2024-12-29 15:08:50
str_replace('-', '', lcfirst(ucwords('foo-bar-baz', '-'))); // fooBarBaz

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

str_replace('-', '', lcfirst(ucwords('foo-bar-baz', '-'))); // fooBarBaz

ucwords accepts a word separator as a second parameter, so we only need to pass an hyphen and then lowercase the first letter with lcfirst and finally remove all hyphens with str_replace.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文