用 javascript 替换重音字符
Replacing accented characters with javascript
在 onkeyup 上,我想将重音字符替换为非重音字符。现在有了这段代码,我什么也没得到。如果我不给函数 this.value
,我会收到 split
.
的错误
我想使用此功能通过 onkeyup 进行更多输入,但总是针对该输入,即我正在写入的内容。
<input onKeyUp="RemoveAccents(this.value);" type="text" required name="termek_seo" class="product-name" value="<?php echo isset($_POST["termek_seo"])?$_POST["termek_seo"]:""; ?>" />
function RemoveAccents(strAccents)
{
var strAccents = strAccents.split('');
var strAccentsOut = new Array();
var strAccentsLen = strAccents.length;
var accents = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž';
var accentsOut = "AAAAAAaaaaaaOOOOOOOooooooEEEEeeeeeCcDIIIIiiiiUUUUuuuuNnSsYyyZz";
for (var y = 0; y < strAccentsLen; y++)
{
if (accents.indexOf(strAccents[y]) != -1)
{
strAccentsOut[y] = accentsOut.substr(accents.indexOf(strAccents[y]), 1);
}
else
{
strAccentsOut[y] = strAccents[y];
}
}
strAccentsOut = strAccentsOut.join('');
return strAccentsOut;
}
更新:
如何在这段代码中写小写字母?
function RemoveAccents(s)
{
var i = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖŐòóôõöőÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜŰùúûüűÑñŠšŸÿýŽž'.split('');
var o = 'AAAAAAaaaaaaOOOOOOOooooooEEEEeeeeeCcDIIIIiiiiUUUUUuuuuuNnSsYyyZz'.split('');
var map = {};
i.forEach(function(el, idx) {map[el] = o[idx]});
return s.replace(/[^A-Za-z0-9]/g, function(ch) { return map[ch] || ch; })
}
它很管用...
function RemoveAccents(strAccents) {
var strAccents = strAccents.split('');
var strAccentsOut = new Array();
var strAccentsLen = strAccents.length;
var accents = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž';
var accentsOut = "AAAAAAaaaaaaOOOOOOOooooooEEEEeeeeeCcDIIIIiiiiUUUUuuuuNnSsYyyZz";
for (var y = 0; y < strAccentsLen; y++) {
if (accents.indexOf(strAccents[y]) != -1) {
strAccentsOut[y] = accentsOut.substr(accents.indexOf(strAccents[y]), 1);
} else {
strAccentsOut[y] = strAccents[y];
}
}
strAccentsOut = strAccentsOut.join('');
console.log(strAccentsOut);
return strAccentsOut;
}
<input onKeyUp="RemoveAccents(this.value);" type="text" required name="termek_seo" class="product-name" value="ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž" />
我用另一个代码解决了这个问题:
function RemoveAccents(s)
{
var i = 'ĂĂĂĂĂĂà åâãäüĂĂĂĂĂĂĹòóôþÜĹĂĂĂĂèÊêÍðĂçĂĂĂĂĂĂŹĂĂŽĂŻĂĂĂĂŰÚúÝߏĂùŠťŸÿýŽŞ+_.:;[]()/*"<> '.split('');
var o = 'AAAAAAaaaaaaOOOOOOOooooooEEEEeeeeeCcDIIIIiiiiUUUUUuuuuuNnSsYyyZz---------------'.split('');
var map = {};
i.forEach(function(el, idx) {map[el] = o[idx]});
return s.replace(/[^A-Za-z0-9]/g, function(ch) { return map[ch] || ch; }).toLowerCase();
}
在 onkeyup 上,我想将重音字符替换为非重音字符。现在有了这段代码,我什么也没得到。如果我不给函数 this.value
,我会收到 split
.
我想使用此功能通过 onkeyup 进行更多输入,但总是针对该输入,即我正在写入的内容。
<input onKeyUp="RemoveAccents(this.value);" type="text" required name="termek_seo" class="product-name" value="<?php echo isset($_POST["termek_seo"])?$_POST["termek_seo"]:""; ?>" />
function RemoveAccents(strAccents)
{
var strAccents = strAccents.split('');
var strAccentsOut = new Array();
var strAccentsLen = strAccents.length;
var accents = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž';
var accentsOut = "AAAAAAaaaaaaOOOOOOOooooooEEEEeeeeeCcDIIIIiiiiUUUUuuuuNnSsYyyZz";
for (var y = 0; y < strAccentsLen; y++)
{
if (accents.indexOf(strAccents[y]) != -1)
{
strAccentsOut[y] = accentsOut.substr(accents.indexOf(strAccents[y]), 1);
}
else
{
strAccentsOut[y] = strAccents[y];
}
}
strAccentsOut = strAccentsOut.join('');
return strAccentsOut;
}
更新:
如何在这段代码中写小写字母?
function RemoveAccents(s)
{
var i = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖŐòóôõöőÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜŰùúûüűÑñŠšŸÿýŽž'.split('');
var o = 'AAAAAAaaaaaaOOOOOOOooooooEEEEeeeeeCcDIIIIiiiiUUUUUuuuuuNnSsYyyZz'.split('');
var map = {};
i.forEach(function(el, idx) {map[el] = o[idx]});
return s.replace(/[^A-Za-z0-9]/g, function(ch) { return map[ch] || ch; })
}
它很管用...
function RemoveAccents(strAccents) {
var strAccents = strAccents.split('');
var strAccentsOut = new Array();
var strAccentsLen = strAccents.length;
var accents = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž';
var accentsOut = "AAAAAAaaaaaaOOOOOOOooooooEEEEeeeeeCcDIIIIiiiiUUUUuuuuNnSsYyyZz";
for (var y = 0; y < strAccentsLen; y++) {
if (accents.indexOf(strAccents[y]) != -1) {
strAccentsOut[y] = accentsOut.substr(accents.indexOf(strAccents[y]), 1);
} else {
strAccentsOut[y] = strAccents[y];
}
}
strAccentsOut = strAccentsOut.join('');
console.log(strAccentsOut);
return strAccentsOut;
}
<input onKeyUp="RemoveAccents(this.value);" type="text" required name="termek_seo" class="product-name" value="ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž" />
我用另一个代码解决了这个问题:
function RemoveAccents(s)
{
var i = 'ĂĂĂĂĂĂà åâãäüĂĂĂĂĂĂĹòóôþÜĹĂĂĂĂèÊêÍðĂçĂĂĂĂĂĂŹĂĂŽĂŻĂĂĂĂŰÚúÝߏĂùŠťŸÿýŽŞ+_.:;[]()/*"<> '.split('');
var o = 'AAAAAAaaaaaaOOOOOOOooooooEEEEeeeeeCcDIIIIiiiiUUUUUuuuuuNnSsYyyZz---------------'.split('');
var map = {};
i.forEach(function(el, idx) {map[el] = o[idx]});
return s.replace(/[^A-Za-z0-9]/g, function(ch) { return map[ch] || ch; }).toLowerCase();
}