我尝试使用.toUpperCase()将数组中的字符转换为大写字母,但它不起作用。我很确定我的逻辑是正确的,所以不确定为什么它不起作用?
var test = "hello*3";
function LetterChanges(str) {
//var testArr = str.split("");
var tempArr = [];
for (i = 0; i < str.length; i++) {
if (str.charCodeAt(i) >= 97 && str.charCodeAt(i) <= 122) {
tempArr.push(str.charCodeAt(i));
tempArr[i] = tempArr[i] + 1;
tempArr[i] = String.fromCharCode(tempArr[i]);
if (tempArr[i] == "p" || tempArr[i] == "i") {
tempArr[i].toUpperCase();
console.log(tempArr[i]); //this will display "i" and "p".. why?
}
} else {
tempArr[i] = str[i];
}
}
console.log(tempArr); //this display [ 'i', 'f', 'm', 'm', 'p', '*', '3' ]
str = tempArr.join("");
return str;
}
&#13;
所以,当我比较&#34; p&#34;和&#34;我&#34;它能够检测到它,但它并没有将它转换为大写。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:2)
的console.log(tempArr [I]); //这将显示&#34; i&#34;和&#34; p&#34; ...为什么?
因为您没有将转换后的值存储回变量
制作
tempArr[i] = tempArr[i].toUpperCase();
答案 1 :(得分:1)
上面的答案是正确的,但我稍微修改了你写的代码, 因为可以在不使用数组的情况下实现。
var test = "hello*3";
LetterChanges(test)
function LetterChanges(str) {
var newStr = ""
for (i = 0; i < str.length; i++) {
var ch = str[i];
if(ch >='A' && ch<='z'){
ch = String.fromCharCode(ch.charCodeAt(0) + 1);
if(ch == 'p' || ch == 'i')
ch = ch.toUpperCase();
}
newStr += ch;
}
console.log(newStr);
return newStr;
}