【问题标题】:Replacing accented characters with javascript用javascript替换重音字符
【发布时间】:2017-08-29 18:00:47
【问题描述】:

在 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;
}

更新:

我怎样才能在这段代码中写出tolowcase?

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; })
}

【问题讨论】:

  • 它只是工作...... :]
  • 有效??在哪里? :)

标签: javascript non-ascii-characters


【解决方案1】:

它只是工作......

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;
}
&lt;input onKeyUp="RemoveAccents(this.value);" type="text" required name="termek_seo" class="product-name" value="ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž" /&gt;

【讨论】:

  • 但是为什么它对我有用?我看到了你的小提琴,这行得通。
  • 只用原生toLowerCase
  • 完美!谢谢。
【解决方案2】:

我已经用另一个代码解决了这个问题:

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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-23
    • 2017-11-09
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    • 2019-02-05
    • 2013-08-10
    • 1970-01-01
    相关资源
    最近更新 更多