gpt4 book ai didi

javascript - map 和正则表达式的怪异

转载 作者:行者123 更新时间:2023-11-29 21:02:22 25 4
gpt4 key购买 nike

<分区>

我正在做一个将凯撒密码字符串解码为可读文本的套路。我在 map 中使用 RegEx 来查找特殊字符并跳过它们,但如果我有两个或多个彼此相邻的特殊字符“、”或“:)”,则输出不稳定。它似乎跳过了一些特殊字符。

谁能解释一下这是怎么回事?

我没有包含 changeCharCode 函数代码,因为我认为问题出在我的 map 中。

function decodeString(string) {
const stringArr = string.toLowerCase().split('');
const specialCharacters = /[ .,\/#!$%\^&\*;:{}=\-_`~()]/g;
const codeOfX = 'x'.charCodeAt(0);
const codeOfLastLetter = stringArr[stringArr.length - 1].charCodeAt(0);
const codeShift = codeOfX - codeOfLastLetter;

return stringArr.map((elem) => {
// Special character treatment
return specialCharacters.test(elem) === true ? elem : changecharCode(elem, codeShift);
}).join('').toUpperCase();
}

function changecharCode (letter, codeShift) {
const currentCode = letter.charCodeAt(0);
// Uppercase letters
if ((currentCode >= 65) && (currentCode <= 90))
return letter = String.fromCharCode(((currentCode - 65 + codeShift) % 26) + 65);
// Lowercase letters
else if ((currentCode >= 97) && (currentCode <= 122))
return letter = String.fromCharCode(((currentCode - 97 + codeShift) % 26) + 97);
}

decodeString(' :) ') => ' ) '
decodeString(', ') => ','

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com