Javascript 将重音字符替换为其非重音等效字符
我有一个不允许重音的文本字段。我使用的代码是:Javascript 将重音字符替换为其非重音等效字符,javascript,Javascript,我有一个不允许重音的文本字段。我使用的代码是: <input type="text" onkeyup="value=value.replace(/[^0-9a-zA-Z' ']/g,'')"> 但是,我需要替换字符,而不是阻塞字符,例如,键入“更改为C” 我找到了一个函数,它正在工作,但当我键入一个点时,会出现字母a 你能帮我吗 <script>function retiraAcento(palavra,obj){ com_acento = 'áàãâäéèêë
<input type="text" onkeyup="value=value.replace(/[^0-9a-zA-Z' ']/g,'')">
但是,我需要替换字符,而不是阻塞字符,例如,键入“更改为C”
我找到了一个函数,它正在工作,但当我键入一个点时,会出现字母a
你能帮我吗
<script>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;}</script><input type="text" onKeyUp="javascript:retiraAcento(this.value, this);">
函数retiraAcento(palavra,obj){
comèacento=‘èèèèèèèèèèèèèèèèèèèè193;èèèèèèèèèèè23;
sem_acento=‘aaaaeaeeiiiouuuuuucaaaaeeiiouuuuuuuc’;
新星='';
对于(i=0;i=0){
nova+=sem_acento.substr(com_acento.search(palavra.substr(i,1)),1);
}否则{
新星+=帕拉夫拉宫(i,1);
}
}
obj.value=nova;}
我没有深入了解为什么将
替换为,但是这个版本没有这种行为。它的工作原理并不完全相同,并且对整个字符串进行操作,但这可能不是问题,除非它用于大型文本字段,在这种情况下,可以通过其他方式对其进行优化
const com_acento = 'áàãâäéèêëíìîïóòõôöúùûüçÁÀÃÂÄÉÈÊËÍÌÎÏÓÒÕÖÔÚÙÛÜÇ<,>´`-,~';
const sem_acento = 'aaaaaeeeeiiiiooooouuuucAAAAAEEEEIIIIOOOOOUUUUC ';
function retiraAcento(string) {
return string
.split('')
.map(char => {
const charIdx = com_acento.indexOf(char)
if (charIdx !== -1) {
return sem_acento[charIdx]
}
return char
})
.join('')
}
function replaceCharOnChange(evt) {
event.target.value = retiraAcento(evt.target.value)
}
document.querySelector('input').addEventListener('keyup', replaceCharOnChange)
const comèacento='aèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèè23;
const sem_acento='aaaaeaeeiioouucaaaaeeiioouuca';
函数retiraAcento(字符串){
返回字符串
.拆分(“”)
.map(char=>{
常量charIdx=com\u acento.indexOf(char)
如果(charIdx!==-1){
返回sem_acento[charIdx]
}
返回字符
})
.加入(“”)
}
函数替换CharonChange(evt){
event.target.value=retiraAcento(evt.target.value)
}
document.querySelector('input')。addEventListener('keyup',replaceCharOnChange)
抱歉,这是用英语改写的一半!我还考虑使用两个长度相同的字符串以外的另一种数据结构。最简单的是对象查找表,例如:
{á:‘a’,ç:‘c’,…}
但是你也可以用其他方法来处理它可能的重复我承认用
a
代替a比�代码>,但最好首先修复文本字段不允许重音的原因。只有脱衣口音作为最后手段。Unicode让世界变得更好——如果可能的话,我们应该使用它。