有人可以在javascript上帮助我使用这个功能吗?
我在javascript上执行了此功能,但是当我尝试在此字符串上使用时:项目1 - 1 X 500 OS 129062。 材料DE NOSSA PROPRIEDADE QUE SEGUE P / ANALISE E TESTE,SEMDÉBITO (AMOSTRAGRÁTIS)。
我收到错误:索引1附近的未关闭组
Plz,帮帮我
function retiraAcentos(texto) {
var caracEspec = '.áàãâäéèêëíìîïóòõôöúùûüçñÁÀÃÂÄÉÈÊËÍÌÎÏÓÒÕÖÔÚÙÛÜÇÑ/';
var caracComum = '.aaaaaeeeeiiiiooooouuuucnAAAAAEEEEIIIIOOOOOUUUUCN.';
var textoResultado = '';
for (i = 0; i < texto.length; i++) {
var letra = texto.substr(i, 1);
if ((letra == "*") || (letra == "?") || (letra == "\n") || (letra == '+')) {
continue;
}
var posLetra = caracEspec.search(letra);
if (posLetra >= 0) {
textoResultado += caracComum.substr(posLetra, 1);
} else {
textoResultado += letra;
}
}
return textoResultado;
}
答案 0 :(得分:1)
search
函数需要正则表达式。请尝试使用indexOf
:
var posLetra = caracEspec.indexOf(letra);
答案 1 :(得分:0)
我使用 jsfiddle 进行了一些研究。
事实证明,如果文本包含括号(打开或关闭),
然后在某一点上这样的括号成为search
的论点
函数,它引发未终止的括号错误。
显然,此函数在内部使用正则表达式并使用单个括号 不是任何有效的正则表达式。
使用indexOf
代替search
。
另一个更正:从caracEspec
的开头删除点字符
和caracComum
。
如果您使用search
,那么点(被视为正则表达式)与任何字符匹配,
在这种情况下,来自caracEspec
的第一个字符,给出posLetra
= 0。
这导致从caracComum
获取第一个字符(幸运的是,也是一个点)。
现在不需要这些组合。