写一个把字符串大小写切换的方法
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(''): 将数组元素连接成一个字符串。
希望这个解释对您有所帮助!
浙公网安备 33010602011771号