因此,正如问题所述,我正在尝试构建一个小辅助函数来捕获并修复特殊字符,我不确定该去哪里,所以选择了一个包含字符的对象,检查它是否是包含,如果包含,则将字符串中的字符替换为适当的对象条目。
但是我现在陷入困境,我已经得到了该对象并检查它是否确实包含在内。我只是不知道如何定位那段字符串,然后替换它。我尝试使用包含和替换,但似乎不起作用。
这是我的代码:
export function fixEncoding(str) {
const specialChars = {
"À": "À ",
"Á": "Á",
"Â": "Â",
"Ã": "Ã",
"Ä": "Ä",
"Å": "Å",
"à": "à",
"á": "á",
"â": "â",
"ã": "ã",
"ä": "ä",
"å": "å",
"Æ": "Æ",
"æ": "æ",
"ß": "ß",
"Ç": "Ç",
"ç": "ç",
"È": "È",
"É": "É",
"Ê": "Ê",
"Ë": "Ë",
"è": "è",
"é": "é",
"ê": "ê",
"ë": "ë",
"ƒ": "ƒ",
"Ì": "Ì",
"Í": "Í",
"Î": "Î",
"Ï": "Ï",
"ì": "ì",
"í": "í",
"î": "î",
"ï": "ï",
"Ñ": "Ñ",
"ñ": "ñ",
"Ò": "Ò",
"Ó": "Ó",
"Ô": "Ô",
"Õ": "Õ",
"Ö": "Ö",
"ò": "ò",
"ó": "ó",
"ô": "ô",
"õ": "õ",
"ö": "ö",
"Ø": "Ø",
"ø": "ø",
"Œ": "Œ",
"œ": "œ",
"Š": "Š",
"š": "š",
"Ù": "Ù",
"Ú": "Ú",
"Û": "Û",
"Ü": "Ü",
"ù": "ù",
"ú": "ú",
"û": "û",
"ü": "ü",
"µ": "µ",
"×": "×",
"Ý": "Ý",
"Ÿ": "Ÿ",
"ý": "ý",
"ÿ": "ÿ",
"°": "°",
"†": "†",
"‡": "‡",
"<": "<",
">": ">",
"±": "±",
"«": "«",
"»": "»",
"¿": "¿",
"¡": "¡",
"·": "·",
"•": "•",
"™": "™",
"©": "©",
"®": "®",
"§": "§",
"¶": "¶",
"'": "'",
""": '"',
};
let isinclude = (str, obj) => (
(str = str.replace("/", "")),
Object.keys(obj).reduce((a, v) => a || str.includes(v), false)
);
console.log(isinclude(str, specialChars));
for (let i = 0; i < specialChars.length; i++) {
if (str.includes(specialChars[str])) {
console.log(str);
const newStr = str.replace(`${i}`, specialChars[str]);
return newStr;
} else return str;
}
// return str.replace(/'+/g, "'").replace(/"+/g, '"');
}
您不需要对象来完成像角色替换这样简单的事情。
const Bad=['À','Á','Â','Ã','Ä','Å']; // add all your undesirable chars here
const Good=['A','A','A','A','A','A']; // add all their replacements here
for (let i=0; i<Bad.length; i++) {
str=str.replaceAll(Bad[i],Good[i]);
}