将“连字符字符串”转化为驼峰字符串

一:实现代码:

var camelizeRE = /-(\w)/g;

function camelize(str){
   return str.replace(camelizeRE,function(_,c){
      return c ? c.toUpperCase():'';
   })
}

camelize('kkk-zzz-hhh');   kkkZzzHzz;

二: 实现原理:

1.replace方法:

stringObject.replace(regexp/substr,replacement)

参数 描述
regexp/substr

必需。规定子字符串或要替换的模式的 RegExp 对象。

请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。

replacement 必需。一个字符串值。规定了替换文本或生成替换文本的函数。

replace中的第一个参数是正则表达式时,第二个参数可以是一个函数,可以接受多个参数。其中,第一个参数是捕捉到的内容,第二个参数是捕捉到的组匹配(有多少个组匹配,就有多少个对应的参数)。此外,最后还可以添加两个参数,倒数第二个参数是捕捉到的内容在整个字符串中的位置(比如从第五个位置开始),最后一个参数是原字符串。下面是一个网页模板替换的例子。

例:

1.var str = "kkk_yyy_hhh";       

字符串匹配没有正则组匹配

str.replace(''_",function(_,a,b,c){
   console.log(_,a,b,c)        // _     3   
kkk_yyy_hhh  undefined
})

2.var str = "kkk_yyy_hhh";       

正则匹配 没有正则组匹配

str.replace(/_/g,function(_,a,b,c){
   console.log(_,a,b,c)        // _     3     kkk_yyy_hhh undefined          _ 7 kkk_yyy_hhh undefined
})

 

3.var str = "kkk_yyy_hhh";       

正则匹配 有正则组匹配

str.replace(/_(\w)/g,function(_,a,b,c){
   console.log(_,a,b,c)        // _y     y       3     kkk_yyy_hhh         _h   h   7    kkk_yyy_hhh
}) 

查看第三个案例,既然能拿到_y和y两个值就能实现将   “连字符字符串”  转化为  “驼峰命名字符串”

 

你可能感兴趣的:(js)