”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 在 Javascript 中使用此函数将字符串转换为驼峰命名法。

在 Javascript 中使用此函数将字符串转换为驼峰命名法。

发布于2024-08-07
浏览:902

曾经需要将字符串转换为驼峰命名法吗?我在探索开源 Supabase 存储库时发现了一个有趣的代码片段。他们使用的方法如下:

function featureToCamelCase(feature: Feature) {
  return feature
    .replace(/:/g, '\_')
    .split('\_')
    .map((word, index) => (index === 0 ? word : word\[0\].toUpperCase()   word.slice(1)))
    .join('') as FeatureToCamelCase
}

这个功能非常简洁。它将冒号替换为下划线,将字符串拆分为单词,然后映射每个单词以将其转换为驼峰命名法。第一个单词保持小写,后续单词的第一个字符大写,然后再重新连接在一起。简单又有效!

Convert a string to camelCase using this function in Javascript.

我在 Stack Overflow 上发现了另一种不使用正则表达式的方法。这是替代方案:

function toCamelCase(str) {
  return str.split(' ').map(function(word, index) {
    // If it is the first word make sure to lowercase all the chars.
    if (index == 0) {
      return word.toLowerCase();
    }
    // If it is not the first word only upper case the first char and lowercase the rest.
    return word.charAt(0).toUpperCase()   word.slice(1).toLowerCase();
  }).join('');
}

来自 SO 的这段代码片段有注释解释了这段代码的作用,除了它不使用任何类型的正则表达式。 Supabase 将字符串转换为驼峰式的方式中找到的代码与此 SO 答案非常相似,除了注释和使用的正则表达式。

.replace(/:/g, '\_')

此方法用空格分割字符串,然后映射到每个单词。第一个单词完全小写,而后续单词的第一个字符大写,其余字符小写。最后,单词重新连接在一起形成驼峰式字符串。

Stack Overflow 用户的一条有趣评论提到了这种方法的性能优势:

“ 1 表示不使用正则表达式,即使问题要求使用正则表达式的解决方案。这是一个更清晰的解决方案,而且在性能方面也取得了明显的胜利(因为处理复杂的正则表达式比仅仅迭代一堆字符串并将它们连接在一起是一项更困难的任务)。请参阅 jsperf.com/camel-casing-regexp-or-character-manipulation/1 ,我在这里举了一些例子以及这个(还有我自己的谦虚的例子)改进它的性能,尽管在大多数情况下,为了清晰起见,我可能更喜欢这个版本)。”

两种方法都有其优点。 Supabase 代码中的正则表达式方法非常简洁,并且利用了强大的字符串操作技术。另一方面,非正则表达式方法因其清晰度和性能而受到称赞,因为它避免了与正则表达式相关的计算开销。

以下是您如何在它们之间进行选择:

  • 如果您需要一个紧凑的单行解决方案来利用 JavaScript 强大的正则表达式功能,请使用正则表达式方法。另外,请务必添加注释来解释您的正则表达式的作用,以便您未来的自己或下一个使用您的代码的开发人员能够理解。
  • 如果您优先考虑可读性和性能,请选择非正则表达式方法,特别是在处理较长字符串或多次运行此转换时。

想学习如何从头开始构建 shadcn-ui/ui 吗?查看 从头开始构建

关于我:

网站:https://ramunarasinga.com/

Linkedin:https://www.linkedin.com/in/ramu-narasinga-189361128/

Github:https://github.com/Ramu-Narasinga

电子邮件:[email protected]

从头开始构建 shadcn-ui/ui

参考:

  1. https://github.com/supabase/supabase/blob/master/apps/studio/hooks/misc/useIsFeatureEnabled.ts#L16
  2. https://stackoverflow.com/a/35976812
版本声明 本文转载于:https://dev.to/ramunarasinga/convert-a-string-to-camelcase-using-this-function-in-javascript-484j?1如有侵犯,请联系[email protected]删除
最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3