簡體   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