特殊字符替换功能

时间:2013-03-27 21:39:55

标签: javascript jquery

我有一个JavaScript函数,用普通字符替换特殊字符。

当我输入句点.时,它已更改为a

示例:info@example.com已更改为info@exampleacom

我做错了什么?

function retiraAcento(palavra, obj) {
   com_acento = 'áàãâäéèêëíìîïóòõôöúùûüçÁÀÃÂÄÉÈÊËÍÌÎÏÓÒÕÖÔÚÙÛÜÇ';
   sem_acento = 'aaaaaeeeeiiiiooooouuuucAAAAAEEEEIIIIOOOOOUUUUC';
   nova = '';
   for (i = 0; i < palavra.length; i++) {
       if (com_acento.search(palavra.substr(i, 1)) >= 0) {
           nova += sem_acento.substr(com_acento.search(palavra.substr(i, 1)), 1);
       } else {
           nova += palavra.substr(i, 1);
       }
   }
   //obj.value = nova.toUpperCase();
   obj.value = nova
}
$(document).ready(function () {
   $(":input").live('blur', function () {
       retiraAcento(this.value, this);
   });
});

1 个答案:

答案 0 :(得分:4)

String.search接受正则表达式作为参数,而不是哑字符串。角色.在正则表达式中具有特殊含义;它意味着“匹配任何角色”。

因此,当您的代码最终执行com_acento.search(".")时,结果始终为0:该点与第一个字符匹配。此外,正则表达式中还有其他具有特殊含义的字符,这也会导致代码无法正常工作。

使用indexOf代替search来解决您的问题。