连字符转小驼峰
将用连字符连接的字符转变为 小驼峰命名
function lowerCamelCase (arg, hyphen) {let index = arg.indexOf(hyphen) // 找到连字符的索引if (index === -1) {return arg}let newStr = arg.substring(0, index) // 将索引之前的字符 加入新字符 // classwhile (index !== -1) {let upper = arg.charAt(index + 1).toUpperCase() // 将连字符之后的第一个字符转变为大写形式newStr = newStr.concat(upper, arg.substring(index + 2)) // 将大写字符和之后的全部字符都追加入新字符串 // classLast-nameindex = arg.indexOf(hyphen, index + 1) // 寻找下一个连字符的索引if (newStr.indexOf(hyphen) !== -1) {newStr = newStr.substring(0, newStr.indexOf(hyphen)) // 将新的字符串中的连字符之前的字符切出 // classLast}// 这里要加一个判断,因为当最后一个连字符之后的已经没有连字符了,所以 切除后面等于-1}return newStr}lowerCamelCase('class-last-name', '-')// classLastName
另一种方法
function lowerCamelCase (arg, hyphen = '-') {let arr = arg.split(hyphen) // 将字符串以连字符分隔生成数组// 从数组的第二项开始循环,将之后的每一个数组项的首字母大写for (let i = 1; i < arr.length; i++) {arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].substring(1)}return arr.join('')}
使用正则
function lowerCamelCase (arg, hyphen = '-') {const reg = new RegExp(hyphen + '[a-zA-Z]','g') // 因为正则中有变量,所以不能使用字面量return arg.replace(reg, rep => rep.charAt(1).toUpperCase()) // 使用正则将连字符和紧接着的一位字母替换为该字母的大写形式}
连字符转大驼峰
// 和小驼峰一样,正则之前把第一位拼上一个连字符就 ok 了function UpperCamelCase(variableName, hyphen = '-') {const reg = new RegExp(hyphen + '[a-zA-Z]','g'); // 因为正则中有变量,所以不能使用字面量return (hyphen + variableName).replace(reg, rep => rep.charAt(1).toUpperCase());}
小驼峰转连字符
function lowerCamelCase(variableName, hyphen = '-') {return variableName.replace(/\B[A-Z]/g, req => hyphen + req.toLowerCase())}
大驼峰转连字符
// 大驼峰和小驼峰的区别仅在于第一个字母,第一个字母转为小写时,不需要在前面加上连字符,因此需要加个判断// 而在 replace 方法中正好有判断的选择项,即第二个参数值,匹配值的索引function UpperCamelCase(variableName, hyphen = '-') {return variableName.replace(/[A-Z]/g, (req, index) => index === 0 ? req.toLowerCase() : hyphen + req.toLowerCase())}
