JS基础:实现驼峰字符串转下划线字符串

需求如下:

将驼峰写法的字符串转为下划线写法的字符串

eg:输入:"yiZhiXiaoKeLeYa"

        输出:"yi_zhi_xiao_ke_le_ya"

实现思路一:

        可以使用正则表达式来实现驼峰字符串转下划线字符串:

function toUnderline(str) {
  return str.replace(/([A-Z])/g, '_$1').toLowerCase();
}

console.log(toUnderline('yiZhiXiaoKeLeYa')); // 输出 'yi_zhi_xiao_ke_le_ya'
console.log(toUnderline('myCode')); // 输出 'my_code'

        /([A-Z])/g 是一个正则表达式,表示匹配所有大写字母。_$1 中的 $1 表示正则表达式匹配到的第一个大写字母,实现了在它前面添加下划线的效果。最后,使用 toLowerCase() 将所有字母转换成小写。

实现思路二:

        利用 String.prototype.split() 和 Array.prototype.join() 方法:

function toUnderline(str) {
  let result = '';
  for (let i = 0; i < str.length; i++) {
    if (str[i] === str[i].toUpperCase()) {
      result += '_' + str[i].toLowerCase();
    } else {
      result += str[i];
    }
  }
  return result;
}
console.log(toUnderline('yiZhiXiaoKeLeYa')); // 输出 'yi_zhi_xiao_ke_le_ya'
console.log(toUnderline('myCode')); // 输出 'my_code'

   遍历字符串中的每个字符,如果字符是大写字母,则在其前面添加下划线并转化为小写字母,否则直接拼接

实现思路三: 

        利用递归和 String.prototype.replace() 方法:

function toUnderline(str) {
  if (str.length <= 1) {
    return str.toLowerCase();
  }
  let firstChar = str[0];
  if (firstChar === firstChar.toUpperCase()) {
    firstChar = '_' + firstChar.toLowerCase();
  }
  return firstChar + toUnderline(str.slice(1));
}

console.log(toUnderline('yiZhiXiaoKeLeYa')); // 输出 'yi_zhi_xiao_ke_le_ya'
console.log(toUnderline('myCode')); // 输出 'my_code'

  将字符串从第二个字符开始传入递归函数中处理,处理完成后在第一个字符前面根据大小写添加下划线。当字符串长度小于等于 1 时,直接转化为小写字母。

猜你喜欢

转载自blog.csdn.net/weixin_40381947/article/details/131819533