我有一个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);
});
});
答案 0 :(得分:4)
String.search
接受正则表达式作为参数,而不是哑字符串。角色.
在正则表达式中具有特殊含义;它意味着“匹配任何角色”。
因此,当您的代码最终执行com_acento.search(".")
时,结果始终为0
:该点与第一个字符匹配。此外,正则表达式中还有其他具有特殊含义的字符,这也会导致代码无法正常工作。
使用indexOf
代替search
来解决您的问题。