为什么我在使用 String.fromCharCode 时得到的是 \u0000 而不是字符?
Why am I getting \u0000 instead of characters when using String.fromCharCode?
第一次提问 -- 我是菜鸟 -- 我找不到解决这个特定问题的方法。
目标是破译凯撒密码。我的代码可以将正确的字母代码放入数组中。
我可以像这样手动将该数组转换为正确的字符串:
String.fromCharCode(89, 79, 85, 32, 68, 73, 68, 32, 73, 84, 33);
但是当我尝试将数组转换成这样的字符串时:
return String.fromCharCode(arr.join(", "));
它 returns \u0000 -- 我收集到的是 unicode 空字符。
谁能解释一下这是怎么回事?
这是我的完整代码:
function rot13(str) {
var arr = [];
for (var i = 0; i < str.length; i++){
if (str.charCodeAt(i) > 77 && str.charCodeAt(i) < 91){
arr.push(str.charCodeAt(i) - 13);
} else if (str.charCodeAt(i) <=77 && str.charCodeAt(i) > 64) {
arr.push(str.charCodeAt(i) + 13);
} else {
arr.push(str.charCodeAt(i));
}
}
console.log(arr);
return String.fromCharCode(arr.join(", "));
}
rot13("LBH QVQ VG!");
String.fromCharCode(89, 79, 85, 32, 68, 73, 68, 32, 73, 84, 33);
arr.join(',')
不会扩展为函数的参数列表。您要么需要使用 Function.apply (.apply(null, arr)
) or if you have ES6 available, use the spread operator:
return String.fromCharCode(...arr);
或
return String.fromCharCode.apply(null, arr);
function rot13(str) {
var arr = [];
for (var i = 0; i < str.length; i++){
if (str.charCodeAt(i) > 77 && str.charCodeAt(i) < 91){
arr.push(str.charCodeAt(i) - 13);
} else if (str.charCodeAt(i) <=77 && str.charCodeAt(i) > 64) {
arr.push(str.charCodeAt(i) + 13);
} else {
arr.push(str.charCodeAt(i));
}
}
return String.fromCharCode.apply(null, arr);
}
console.log(rot13("LBH QVQ VG!"));
第一次提问 -- 我是菜鸟 -- 我找不到解决这个特定问题的方法。
目标是破译凯撒密码。我的代码可以将正确的字母代码放入数组中。 我可以像这样手动将该数组转换为正确的字符串:
String.fromCharCode(89, 79, 85, 32, 68, 73, 68, 32, 73, 84, 33);
但是当我尝试将数组转换成这样的字符串时:
return String.fromCharCode(arr.join(", "));
它 returns \u0000 -- 我收集到的是 unicode 空字符。
谁能解释一下这是怎么回事?
这是我的完整代码:
function rot13(str) {
var arr = [];
for (var i = 0; i < str.length; i++){
if (str.charCodeAt(i) > 77 && str.charCodeAt(i) < 91){
arr.push(str.charCodeAt(i) - 13);
} else if (str.charCodeAt(i) <=77 && str.charCodeAt(i) > 64) {
arr.push(str.charCodeAt(i) + 13);
} else {
arr.push(str.charCodeAt(i));
}
}
console.log(arr);
return String.fromCharCode(arr.join(", "));
}
rot13("LBH QVQ VG!");
String.fromCharCode(89, 79, 85, 32, 68, 73, 68, 32, 73, 84, 33);
arr.join(',')
不会扩展为函数的参数列表。您要么需要使用 Function.apply (.apply(null, arr)
) or if you have ES6 available, use the spread operator:
return String.fromCharCode(...arr);
或
return String.fromCharCode.apply(null, arr);
function rot13(str) {
var arr = [];
for (var i = 0; i < str.length; i++){
if (str.charCodeAt(i) > 77 && str.charCodeAt(i) < 91){
arr.push(str.charCodeAt(i) - 13);
} else if (str.charCodeAt(i) <=77 && str.charCodeAt(i) > 64) {
arr.push(str.charCodeAt(i) + 13);
} else {
arr.push(str.charCodeAt(i));
}
}
return String.fromCharCode.apply(null, arr);
}
console.log(rot13("LBH QVQ VG!"));