Javascript替换字符串中的utf字符

Javascript替换字符串中的utf字符,javascript,jquery,string,replace,character,Javascript,Jquery,String,Replace,Character,我想在键入文章标题后自动获取值并创建slug。我的代码可以很好地处理英文拉丁字符,但问题是当我键入字符“ċćšđž”时。代码替换字符串中第一种类型的字符,但如果字符重复,则会出现问题。因此,出于测试目的,将标题“ŠđŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠ 这是我的jquery代码: $('input[name=title]').on('blur', function() { var slugElement = $('input[name=slug]'); if(slu

我想在键入文章标题后自动获取值并创建slug。我的代码可以很好地处理英文拉丁字符,但问题是当我键入字符“ċćšđž”时。代码替换字符串中第一种类型的字符,但如果字符重复,则会出现问题。因此,出于测试目的,将标题“ŠđŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠ

这是我的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()函数中吗?

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;
  }
}
var newStr=”“;
对于(变量i=0;i
replace()仅替换第一个匹配项,除非正则表达式与全局修饰符一起使用。您需要将它们全部更改为正则表达式

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;
  }
}
var newStr=”“;
对于(变量i=0;i
试试这个:

    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)); });
    }
试试这个:

    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()正则表达式中?谢谢您的快速回答。我会试试这个,很快回复你。是否可以将这五个字符放入一个replace()正则表达式中?