不使用字符串内置函数实现小写转大写:已写部分代码后遇瓶颈
实现不使用内置转换函数的小写转大写
嘿,我来帮你走完剩下的路!你已经初始化了存储结果的变量,接下来我们可以借助ASCII码的特性来完成转换——小写字母和对应的大写字母在ASCII表中正好相差32(比如'a'的ASCII码是97,'A'是65,97-32=65)。
核心思路
- 遍历字符串的每一个字符
- 判断当前字符是否为小写字母(ASCII码范围97-122)
- 如果是,就把它的ASCII码减去32,再转回字符;不是的话直接保留
- 最后把所有处理后的字符拼接成结果字符串
完善后的代码
function uppp(string) { var result = ''; // 存储最终的大写结果 // 循环遍历每个字符(用string.length获取长度没问题,这不属于转换类内置函数) for (var i = 0; i < string.length; i++) { var charAscii = string.charCodeAt(i); // 获取字符的ASCII码 // 检查是否是小写字母 if (charAscii >= 97 && charAscii <= 122) { // 转大写:ASCII码减32后转回字符 result += String.fromCharCode(charAscii - 32); } else { // 非小写字母直接追加到结果 result += string[i]; } } return result; }
测试示例
比如调用uppp("hello Stack Overflow! 123"),会返回"HELLO STACK OVERFLOW! 123",完美保留了非小写字符的原样。
这里用到的charCodeAt()和String.fromCharCode()都是基础的字符/ASCII转换方法,并没有使用toUpperCase()这类直接完成大小写转换的内置函数,完全符合你的需求~
内容的提问来源于stack exchange,提问作者Frank Johnson
相关产品推荐
相关产品推荐

