曾经需要将字符串转换为驼峰命名法吗?我在探索开源 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<typeof feature> } </typeof>
这个功能非常简洁。它将冒号替换为下划线,将字符串拆分为单词,然后映射每个单词以将其转换为驼峰命名法。第一个单词保持小写,后续单词的第一个字符大写,然后再重新连接在一起。简单而有效!
我在 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
电子邮件:ramu.narasinga@gmail.com
从头开始构建 shadcn-ui/ui
参考:
- https://github.com/supabase/supabase/blob/master/apps/studio/hooks/misc/useIsFeatureEnabled.ts#L16
- https://stackoverflow.com/a/35976812
以上是在 Javascript 中使用此函数将字符串转换为驼峰命名法。的详细内容。更多信息请关注PHP中文网其他相关文章!

JavaScript字符串替换方法详解及常见问题解答 本文将探讨两种在JavaScript中替换字符串字符的方法:在JavaScript代码内部替换和在网页HTML内部替换。 在JavaScript代码内部替换字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 该方法仅替换第一个匹配项。要替换所有匹配项,需使用正则表达式并添加全局标志g: str = str.replace(/fi

本教程向您展示了如何将自定义的Google搜索API集成到您的博客或网站中,提供了比标准WordPress主题搜索功能更精致的搜索体验。 令人惊讶的是简单!您将能够将搜索限制为Y

利用轻松的网页布局:8个基本插件 jQuery大大简化了网页布局。 本文重点介绍了简化该过程的八个功能强大的JQuery插件,对于手动网站创建特别有用

因此,在这里,您准备好了解所有称为Ajax的东西。但是,到底是什么? AJAX一词是指用于创建动态,交互式Web内容的一系列宽松的技术。 Ajax一词,最初由Jesse J创造

核心要点 JavaScript 中的 this 通常指代“拥有”该方法的对象,但具体取决于函数的调用方式。 没有当前对象时,this 指代全局对象。在 Web 浏览器中,它由 window 表示。 调用函数时,this 保持全局对象;但调用对象构造函数或其任何方法时,this 指代对象的实例。 可以使用 call()、apply() 和 bind() 等方法更改 this 的上下文。这些方法使用给定的 this 值和参数调用函数。 JavaScript 是一门优秀的编程语言。几年前,这句话可

该帖子编写了有用的作弊表,参考指南,快速食谱以及用于Android,BlackBerry和iPhone应用程序开发的代码片段。 没有开发人员应该没有他们! 触摸手势参考指南(PDF) Desig的宝贵资源

jQuery是一个很棒的JavaScript框架。但是,与任何图书馆一样,有时有必要在引擎盖下发现发生了什么。也许是因为您正在追踪一个错误,或者只是对jQuery如何实现特定UI感到好奇


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

Dreamweaver CS6
视觉化网页开发工具

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具