-2

因此,正如问题所述,我正在尝试构建一个小的助手函数来捕获和修复特殊字符,我不知道该如何使用它,所以选择了一个包含字符的对象,检查它是否包含在内,如果包含,则用适当的对象项替换字符串中的字符。

然而,我现在被卡住了,我已经拿到了这个物体和支票,看看它是否真的包括在内。我只是不知道如何确定字符串的目标,然后替换它。我尝试使用include和replace,但似乎不起作用。

这是我的代码:

导出函数fixEncoding(str){const特殊字符={“&Agrave;”:“阿里”,“&Aacute;”:“á”,“&Acirc;”:“”,“&Atilde;”:“Ô,“&Auml;”:“ala”,“&Aring;”:“奥”,“&agrave;”:“a”,“&aacute;”:“á”,“&acirc;”:“–”,“&atilde;”:“昂”,“&auml;”:“ä”,“&aring;”:“ó”,“&AElig;”:“Æ”,“&aelig;”:“”,“&szlig;”:“ß”,“[Cedil;”:“Ç”,“&ccedil;”:“ç”,“&Egrave;”:“È”,“&Eacute;”:“ε”,“&Ecirc;”:“á”,“&Euml;”:“Ë”,“&egrave;”:“è”,“&eacute;”:“é”,“&ecirc;”:“存在”,“&euml;”:“è”,"&#131;": "ƒ",“Igrave;”:“宋体”,“&Iacute;”:“Í”,“&Icirc;”:“Δ,“&Iuml;”:“Ï”,“&igrave;”:“啊”,“&iacute;”:“í”,“&icirc;”:“â”,“&iuml;”:“ie”,“&Ntilde;”:“ñ”,“&ntilde;”:“ñ”,“&Ograve;”:“Ò”,“&Oacute;”:“奥斯”,“&Ocirc;”:“Ô”,“&Otilde;”:“Õ”,“&Ouml;”:“Ù”,“&ograve;”:“”,“&oacute;”:“ó”,“&ocirc;”:“ó”,“&otilde;”:“ö”,“&ouml;”:“ö”,“&Oslash;”:“Ø”,“&oslash;”:“ö”,"&#140;": "Œ","&#156;": "œ","&#138;": "Š","&#154;": "š",“&Ugrave;”:“Ù”,“&Uacute;”:“Ú”,“&Ucirc;”:“Û”,“&Uuml;”:“u”,“&ugrave;”:“恇”,“&uacute;”:“u”,“&ucirc;”:“u”,“&uuml;”:“u”,"&#181;": "µ","&#215;": "×",“&Yacute;”:“Ý”,"&#159;": "Ÿ",“&yacute;”:“ý”,“-yuml;”:“伊”,"&#176;": "°","&#134;": "†","&#135;": "‡",“&lt;”:“<”,“&gt;”:“>”,"&#177;": "±","&#171;": "«","&#187;": "»","&#191;": "¿","&#161;": "¡","&#183;": "·","&#149;": "•","&#153;": "™",“&copy;”:“©”,“&reg;”:“®”,"&#167;": "§","&#182;": "¶","&#039;": "'",“&quot;”:“”,};让isinclude=(str,obj)=>((str=str.replace(“/”,“”)),Object.keys(obj).reduce((a,v)=>a||str.includes(v),false));控制台.log(isinclude(str,specialChars));for(设i=0;i<specialChars.length;i++){if(str.includes(specialChars[str])){console.log(str);const newStr=str.replace(`${i}`,specialChars[str]);返回newStr;}否则返回str;}//return str.replace(/&#039;+/g,“”).replase(/&quot;+/g、“”);}
5
  • 2
    这回答了你的问题吗?使用javascript将HTML字符实体转换回常规文本 评论 5月23日11:15
  • 整个对于这个街区看起来乱七八糟。特殊字符长度不存在,很可能也不存在特殊字符[str],更换`${i}`没有意义,循环在每个分支中返回。 评论 5月23日11:23
  • @DouwedeHaan我不确定是否会这样,因为我想创建一个可以在字符串上使用的正则函数,该函数正在映射到一个对象中,我必须对此进行研究,但在当前我不确定
    – 沙安德
    评论 5月23日11:23
  • @ASDFGerte你能指出我是如何修复的吗?
    – 沙安德
    评论 5月23日11:23
  • 这些“特殊字符”是HTML实体。有现成的HTML实体编码和解码流程;您不需要用自己积累的一长串序列来重新创建它,这些序列甚至没有涵盖现有的所有可能的HTML实体。
    – 减少
    评论 5月23日11:37

3个答案

重置为默认值
2

第一,特殊字符是一个对象,而不是数组,因此您可以使用特殊字符长度此外,循环中的替换逻辑没有正确设置,无法处理每个字符的所有替换。

函数fixEncoding(str){const特殊字符={“&Agrave;”:“阿里”,“&acute;”:“Á”,“&Acirc;”:“”,“&Atilde;”:“Ô,“&Auml;”:“ala”,“&Aring;”:“奥”,“&agrave;”:“a”,“&aacute;”:“á”,“&acirc;”:“–”,“&atilde;”:“昂”,“&auml;”:“ä”,“&aring;”:“ó”,“&AElig;”:“Æ”,“&aelig;”:“”,“&szlig;”:“ß”,“&Ccedil;”:“j”,“&ccedil;”:“ç”,“&Egrave;”:“È”,“&Eacute;”:“ε”,“&Ecirc;”:“á”,“&Euml;”:“Ë”,“&egrave;”:“è”,“&eacute;”:“é”,“&ecirc;”:“存在”,“&euml;”:“è”,"&#131;": "ƒ",“&Igrave;”:“Ì”,“&Iacute;”:“内”,“&Icirc;”:“岛”,“&Iuml;”:“Ï”,“&igrave;”:“啊”,“&iacute;”:“í”,“&icirc;”:“â”,“&iuml;”:“ie”,“&Ntilde;”:“ñ”,“&ntilde;”:“ñ”,“&Ograve;”:“Ò”,“&Oacute;”:“奥斯”,“&Ocirc;”:“Ô”,“&Otilde;”:“”,“Ouml;”:“Ö”,“&ograve;”:“”,“&oacute;”:“ó”,“&ocirc;”:“ó”,“&otilde;”:“ö”,“&ouml;”:“ö”,“&Oslash;”:“Ø”,“&oslash;”:“ö”,"&#140;": "Œ","&#156;": "œ","&#138;": "Š","&#154;": "š",“&Ugrave;”:“Ù”,“&U急性;”:“u”,“&Ucirc;”:“Û”,“&Uuml;”:“u”,“&ugrave;”:“恇”,“&uacute;”:“u”,“&ucirc;”:“u”,“&uuml;”:“u”,"&#181;": "µ","&#215;": "×",“&Yacute;”:“Ý”,"&#159;": "Ÿ",“&yacute;”:“啊”,“&yuml;”:“”,"&#176;": "°","&#134;": "†","&#135;": "‡",“&lt;”:“<”,“&gt;”:“>”,"&#177;": "±","&#171;": "«","&#187;": "»","&#191;": "¿","&#161;": "¡","&#183;": "·","&#149;": "•","&#153;": "™",“&copy;”:“©”,“&reg;”:“®”,"&#167;": "§","&#182;": "¶","&#039;": "'",“&quot;”:“”,};Object.keys(specialChars).forEach(key=>{str=str.replace(新RegExp(key,'g'),specialChars[key]);});返回str;}const htmlEncodedString=“这是一个带引号和撇号(&#039;)的编码字符串。”;const decodedString1=固定编码(htmlEncodedString);console.log(decodedString1);

1
  • 1
    啊,我明白我哪里出错了,我在它上面循环,好像它是一个数组,并且只针对第一次出现的情况。谢谢你的洞察力。
    – 沙安德
    评论 5月23日11:43
1

像字符替换这样简单的事情不需要对象。

const Bad=['ali','An','Ã','Ala','Au'];//在此处添加所有不需要的字符const Good=['A','A'在此处添加所有替换项for(设i=0;i<Bad.length;i++){str=str.replaceAll(坏[i],好[i]);}
0
-1

如果是的话HTML实体你需要替换你可以一下子做到。。。

var str='&Agrave&Aacute&Acirc&阿蒂尔德&Auml&阿林&农耕&aacute&acirc&阿蒂尔德&auml&正在;';str=解码URI组件(str);document.write(str);

输出:阿利瓦·阿利亚诺

1
  • 错误…HTML实体!=URI组件。“解码”实际上是由文档.写入此处(因为文档中的HTML由浏览器解释)…
    – 减少
    评论 5月23日12:34

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览已标记的其他问题问你自己的问题.