繁体   English   中英

Javascript替换字符串中的utf字符

[英]Javascript replace utf characters in string

我想在键入职位标题后自动取值并创建子弹。 我的代码可以使用英语拉丁字符正常工作,但是问题是当我键入字符“čćšđž”时。 代码替换了字符串中此字符的第一种类型,但是如果重复字符,则是一个问题。 因此,出于测试目的,此标题“šžđčćžđščćšđžčćšđžčćšđžčććčšđžšžčćšđćčšžčć”被转换为该词条“ szdcc”。

这是我的jQuery代码:

$('input[name=title]').on('blur', function() {
    var slugElement = $('input[name=slug]');

    if(slugElement.val()) {
        return;
    }

    slugElement.val(this.value.toLowerCase().replace('ž', 'z').replace('č','c').replace('š', 's').replace('ć', 'c').replace('đ', 'd').replace(/[^a-z0-9-]+/g, '-').replace(/^-+|-+$/g, ''));
});

如何解决这个问题? 也可以将这几个字符放在相同的replace()函数中吗?

尝试这个:

    function clearText(inp) {
        var wrong = 'čćšđž';
        var right = 'ccsdz';
        var re = new RegExp('[' + wrong + ']', 'ig');
        return inp.replace(re, function (m) { return right.charAt(wrong.indexOf(m)); });
    }

replace()仅替换第一个匹配项,除非将regex与全局修饰符一起使用。 您将需要将它们全部更改为正则表达式。

replace(/ž/g, "z")

据我所知,在您的情况下将无法使用单个replace()。 如果您想将一堆.replace()链接在一起,则最好编写一些自定义代码来替换这些字符。

var newStr = "";
for (var i = 0; i < str.length; i++) {
  var c = str.charAt(i);
  switch (c) {
    case "ž": newStr += "z"; break;
    default: newStr += c; break;
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM