连字符转小驼峰

将用连字符连接的字符转变为 小驼峰命名

  1. function lowerCamelCase (arg, hyphen) {
  2. let index = arg.indexOf(hyphen) // 找到连字符的索引
  3. if (index === -1) {
  4. return arg
  5. }
  6. let newStr = arg.substring(0, index) // 将索引之前的字符 加入新字符 // class
  7. while (index !== -1) {
  8. let upper = arg.charAt(index + 1).toUpperCase() // 将连字符之后的第一个字符转变为大写形式
  9. newStr = newStr.concat(upper, arg.substring(index + 2)) // 将大写字符和之后的全部字符都追加入新字符串 // classLast-name
  10. index = arg.indexOf(hyphen, index + 1) // 寻找下一个连字符的索引
  11. if (newStr.indexOf(hyphen) !== -1) {
  12. newStr = newStr.substring(0, newStr.indexOf(hyphen)) // 将新的字符串中的连字符之前的字符切出 // classLast
  13. }
  14. // 这里要加一个判断,因为当最后一个连字符之后的已经没有连字符了,所以 切除后面等于-1
  15. }
  16. return newStr
  17. }
  18. lowerCamelCase('class-last-name', '-')
  19. // classLastName

另一种方法

  1. function lowerCamelCase (arg, hyphen = '-') {
  2. let arr = arg.split(hyphen) // 将字符串以连字符分隔生成数组
  3. // 从数组的第二项开始循环,将之后的每一个数组项的首字母大写
  4. for (let i = 1; i < arr.length; i++) {
  5. arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].substring(1)
  6. }
  7. return arr.join('')
  8. }

使用正则

  1. function lowerCamelCase (arg, hyphen = '-') {
  2. const reg = new RegExp(hyphen + '[a-zA-Z]','g') // 因为正则中有变量,所以不能使用字面量
  3. return arg.replace(reg, rep => rep.charAt(1).toUpperCase()) // 使用正则将连字符和紧接着的一位字母替换为该字母的大写形式
  4. }

连字符转大驼峰

  1. // 和小驼峰一样,正则之前把第一位拼上一个连字符就 ok 了
  2. function UpperCamelCase(variableName, hyphen = '-') {
  3. const reg = new RegExp(hyphen + '[a-zA-Z]','g'); // 因为正则中有变量,所以不能使用字面量
  4. return (hyphen + variableName).replace(reg, rep => rep.charAt(1).toUpperCase());
  5. }

小驼峰转连字符

  1. function lowerCamelCase(variableName, hyphen = '-') {
  2. return variableName.replace(/\B[A-Z]/g, req => hyphen + req.toLowerCase())
  3. }

大驼峰转连字符

  1. // 大驼峰和小驼峰的区别仅在于第一个字母,第一个字母转为小写时,不需要在前面加上连字符,因此需要加个判断
  2. // 而在 replace 方法中正好有判断的选择项,即第二个参数值,匹配值的索引
  3. function UpperCamelCase(variableName, hyphen = '-') {
  4. return variableName.replace(/[A-Z]/g, (req, index) => index === 0 ? req.toLowerCase() : hyphen + req.toLowerCase())
  5. }