You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用charCodeAt()和fromCharCode()处理Unicode十进制97-123字符并实现字母替换?

解决JavaScript字符替换:仅处理小写字母并替换为下一个字符

你的现有代码没有做字符范围判断,导致非小写字母(比如大写A)会被错误转换,而且z会变成{(对应Unicode 123),不符合字母循环的预期。下面是修改后的代码,专门处理Unicode 97(小写a)到122(小写z)的字符,同时处理z转a的循环逻辑:

function stringEncoder(str) {
    let unicodeChars = str.split("");
    for (let i = 0; i < unicodeChars.length; i++) {
        const char = unicodeChars[i];
        const code = char.charCodeAt(0);
        // 仅处理小写字母(Unicode 97-122)
        if (code >= 97 && code <= 122) {
            // z(122) 转 a(97),其他字符编码+1
            const newCode = code === 122 ? 97 : code + 1;
            unicodeChars[i] = String.fromCharCode(newCode);
        }
        // 非小写字母保持原字符不变
    }
    return unicodeChars.join("");
}

console.log(stringEncoder("Abz")); // 输出 "Aca"

关键说明:

  • 范围筛选:用code >= 97 && code <= 122判断字符是否为小写字母,这正是你提及的Unicode 97到122的范围(注意123是左大括号,不属于英文字母范畴,通常不需要纳入处理)
  • 循环处理:当字符是z(编码122)时,直接转为a(97),避免出现非字母符号
  • 非目标字符保留:不在范围内的字符(比如大写A、数字、符号)会保持原样,不会被错误修改

如果确实需要处理到Unicode 123(左大括号),只需要把判断条件改成code >= 97 && code <= 123,同时调整逻辑为code === 123 ? 97 : code + 1即可,但这个场景下更常见的需求是处理英文字母,所以优先推荐上面的代码。

内容的提问来源于stack exchange,提问作者Daniel Hakobyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 23:56:12