前言
有时候面试的时候,我们也容易看到这类题
面试官
请你实现
let s = 'hello_world' => helloWorld
这就是接下来要介绍的下划线转驼峰了
正则写法
function underlineToCamel(str) {
return str.replace(/_(\w)/g, function (match, letter) {
return letter.toUpperCase();
});
}
let s = 'hello_world'
console.log(underlineToCamel(s)) // helloWorld
这里考察的就是我们平常对正则语法的了解程度怎么样了
分析
-
- 匹配下划线后面的一个单词字符
/ /
之间的部分是正则表达式的主体,用于匹配字符串中的模式。g
表示全局匹配模式,即在整个字符串中查找所有匹配的模式,而不是只查找第一个匹配。(\w)
表示匹配单个字母、数字或下划线字符,并将其作为一个捕获组
,方便后面replace函数第二个参数(回调函数)使用。replace
函数的第一个参数是一个正则表达式/_(\w)/g
,它表示查找字符串中所有以_
开头,后面紧跟一个单词字符的子字符串,并将其替换为一个新的字符串。
-
- 将匹配到单词字符转换成大写返回
replace
函数的第二个参数是一个替换函数,它接收两个参数:匹配到的字符串
和第一个分组
(即单词字符)。在这个替换函数中,将第一个分组
(即单词字符)转换为大写字母
,并返回该大写字母
,用于替换原来的子字符串。
所以正则没啥难的,难的就是正则的语法我们还不太熟悉,如果实在不想背正则的api的同学怎么办呢?
NO PROBLEM !
就看常规的解法吧
常规解法
function underlineToCamel(str) {
var arr = str.split('_');
for (var i = 1; i < arr.length; i++) {
arr[i] = arr[i][0].toUpperCase() + arr[i].slice(1);
}
return arr.join('');
}
let s = 'hello_world'
console.log(underlineToCamel(s)) // helloWorld
分析
-
- 使用字符串的
split()
方法将字符串按照下划线分隔为一个数组
字符串split()后 arr = [ 'hello', 'world' ]
- 使用字符串的
-
- 然后使用循环遍历数组中的每个元素(除了第一个元素),将每个元素的首字母转换为大写形式,并将其与剩余部分拼接起来
'W' + 'orld' => 'World'
-
- 最终使用字符串的
join()
方法将所有数组元素拼接为一个字符串,返回一个驼峰命名法的字符串。
[ 'hello', 'World' ] => helloWorld
- 最终使用字符串的
有没有感觉这种方法好像更简单易懂一点。但是为了满足面试官的胃口,我们肯定是要做好更充足的准备比较好,两种方法也都要掌握一下,有备无患
小结
这就是我这次的分享了,希望可以帮助到屏幕前的你~
本文正在参加「金石计划」
原文链接:https://juejin.cn/post/7212878846290313275 作者:大眼睛图图