JavaScript 字符串中大小写互相转换函数的多种实现方式


1.常规 for 循环

这种方法使用传统的 for 循环遍历字符串中的每个字符,并根据其大小写状态进行相应的转换。虽然代码较为冗长,但它直接展示了每一步操作。

var str = 'hello JAVASCRIPT';

function toggleCase(str) {
    let c = ""; // 初始化一个空字符串用于存储转换后的字符
    for (let i = 0; i < str.length; i++) { // 遍历字符串中的每个字符
        var ch = str.charAt(i); // 获取当前字符
        if (ch >= 'a' && ch <= 'z') { // 如果是小写字母,则转换为大写
            c += ch.toUpperCase();
        } else if (ch >= 'A' && ch <= 'Z') { // 如果是大写字母,则转换为小写
            c += ch.toLowerCase();
        } else { // 如果不是字母(如空格或符号),则保持不变
            c += ch;
        }
    }
    return c; // 返回转换后的字符串
}

console.log(toggleCase(str)); // 输出: "HELLO javascript"

2.Array.from 方法

利用 Array.from() 将字符串转换为数组,然后使用 map() 对每个字符进行转换,最后用 join('') 将数组重新组合成字符串。

function toggleCase(str) {
    return Array.from(str).map(ch => {
        if (ch >= 'a' && ch <= 'z') { // 如果是小写字母,则转换为大写
            return ch.toUpperCase();
        } else if (ch >= 'A' && ch <= 'Z') { // 如果是大写字母,则转换为小写
            return ch.toLowerCase();
        }
        return ch; // 如果不是字母,则保持不变
    }).join(''); // 将数组元素连接成一个字符串
}

// 使用示例
var str = 'hello JAVASCRIPT';
console.log(toggleCase(str)); // 输出: "HELLO javascript"

3.使用 map 方法

通过扩展运算符 [...] 将字符串转换为数组,然后使用 map() 方法和三元运算符简化条件判断。这种方式不仅代码简洁,而且可读性高。

function toggleCase(str) {
    return [...str].map(ch => 
        ch === ch.toLowerCase() ? ch.toUpperCase() : ch.toLowerCase()
    ).join('');
}

// 使用示例
var str = 'hello JAVASCRIPT';
console.log(toggleCase(str)); // 输出: "HELLO javascript"

注释:

  • [...str]:使用扩展运算符将字符串转换为字符数组。
  • map():对每个字符应用转换规则。
  • ch === ch.toLowerCase():检查字符是否为小写,如果是,则转换为大写;否则,转换为小写。
  • join(''):将转换后的字符数组重新组合成字符串。

4.简洁版 join 方法

这是最简洁的版本,直接在箭头函数中完成所有操作。结合了扩展运算符、map()join() 的优点,代码一行内完成。

const toggleCase = str => [...str].map(ch => ch === ch.toLowerCase() ? ch.toUpperCase() : ch.toLowerCase()).join('');

// 使用示例
var str = 'hello JAVASCRIPT';
console.log(toggleCase(str)); // 输出: "HELLO javascript"

注释:

  • const toggleCase = str => ...:定义一个名为 toggleCase 的箭头函数。
  • 其余部分与“使用 map 方法”相同。

5.总结

以上四种方法都实现了相同的逻辑——将字符串中的小写字母转换为大写,大写字母转换为小写。选择哪种方法取决于个人具体需求:

  • 代码的可读性和易维护性,推荐使用 Array.frommap 方法。
  • 代码极致的简洁,可以考虑使用箭头函数和扩展运算符的一行解决方案。
  • 方便理解,常规 for 循环是一个很好的起点,因为它明确地展示了每一步的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

web Rookie

此处应有打赏,就看兄弟你的啦.

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值