写一个把字符串大小写切换的方法
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)
这两个函数 toggleCase
和 toggleCaseMap
都实现了字符串大小写切换的功能,并保持非字母字符不变。 toggleCase
使用了传统的 for
循环,toggleCaseMap
使用了更简洁的 map
方法. 选择哪个取决于个人偏好和代码风格。 map
版本通常被认为更函数式和现代,但 for
循环版本可能更容易理解对于初学者。
解释:
- 正则表达式
/[a-zA-Z]/
: 用于检查字符是否为字母。 char === char.toUpperCase()
: 检查字符是否为大写字母。 如果字符已经是大写,则该表达式为true
。- 三元运算符
condition ? expr1 : expr2
: 基于条件condition
选择返回expr1
或expr2
。 在这里,如果字符是大写,则转换为小写;否则转换为大写。 map
方法: 创建一个新数组,其中每个元素都是对原始数组中相应元素执行回调函数的结果。join('')
: 将数组元素连接成一个字符串。
希望这个解释对您有所帮助!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)