写一个把字符串大小写切换的方法

function toggleCase(str) {
  let result = "";
  for (let i = 0; i < str.length; i++) {
    const char = str[i];
    // 检查字符是否为字母
    if (/[a-zA-Z]/.test(char)) {
      // 如果是大写字母,转换为小写;如果是小写字母,转换为大写
      result += char === char.toUpperCase() ? char.toLowerCase() : char.toUpperCase();
    } else {
      // 非字母字符保持不变
      result += char;
    }
  }
  return result;
}


// 测试用例
console.log(toggleCase("Hello World")); // Output: hELLO wORLD
console.log(toggleCase("123 AbCd!")); // Output: 123 aBcD!
console.log(toggleCase("")); // Output: "" 
console.log(toggleCase("你好世界")); // Output: 你好世界 (Non-alphabetic characters remain unchanged)


//  更简洁的写法 (使用map)
function toggleCaseMap(str) {
  return [...str].map(char => /[a-zA-Z]/.test(char) ? (char === char.toUpperCase() ? char.toLowerCase() : char.toUpperCase()) : char).join('');
}

// 测试用例 (map版本)
console.log(toggleCaseMap("Hello World")); // Output: hELLO wORLD
console.log(toggleCaseMap("123 AbCd!")); // Output: 123 aBcD!
console.log(toggleCaseMap("")); // Output: ""
console.log(toggleCaseMap("你好世界")); // Output: 你好世界 (Non-alphabetic characters remain unchanged)

这两个函数 toggleCasetoggleCaseMap 都实现了字符串大小写切换的功能,并保持非字母字符不变。 toggleCase 使用了传统的 for 循环,toggleCaseMap 使用了更简洁的 map 方法. 选择哪个取决于个人偏好和代码风格。 map 版本通常被认为更函数式和现代,但 for 循环版本可能更容易理解对于初学者。

解释:

  1. 正则表达式 /[a-zA-Z]/: 用于检查字符是否为字母。
  2. char === char.toUpperCase(): 检查字符是否为大写字母。 如果字符已经是大写,则该表达式为 true
  3. 三元运算符 condition ? expr1 : expr2: 基于条件 condition 选择返回 expr1expr2。 在这里,如果字符是大写,则转换为小写;否则转换为大写。
  4. map 方法: 创建一个新数组,其中每个元素都是对原始数组中相应元素执行回调函数的结果。
  5. join(''): 将数组元素连接成一个字符串。

希望这个解释对您有所帮助!

posted @   王铁柱6  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示