Pertanyaan Cari dan ganti beberapa karakter khusus dengan jquery


Saat ini, ini akan mengambil teks dari textarea dan mengganti semua karakter yang ditentukan dalam charMap:

<form>
<textarea name="text" id="text" style="width:300px; height:200px;"></textarea><br />
<input type="button" name="submit" id="submit" value="submit" />
</form>

var charMap = {
    "Å":'x',
    "å":'y',
    "b":'z',
    "c":'f'
};

$('#submit').click(function() {

    var str = $('#text').val();
    var str_array = str.split('');

    for( var i = 0, len = str_array.length; i < len; i++ ) {
        str_array[ i ] = charMap[ str_array[ i ] ] || str_array[ i ];
    }

    foo = str_array.join('');
    $('#text').val(foo);

});

Masalahnya adalah bahwa ia tidak mengenali karakter khusus. Jadi itu akan menggantikan 'b' dan 'c' tetapi bukan 'Å' dan 'å'.

Ada ide?


4
2017-11-19 23:57


asal


Jawaban:


Sekarang setelah saya memahami persyaratan dengan lebih baik, Anda dapat membuat peta karakter untuk penggantian seperti ini:

Contoh:  http://jsfiddle.net/gaG28/2/

var charMap = {
    a:'z',b:'v',c:'n',d:'s',e:'d',
    f:'k',g:'e',h:'y',i:'j',j:'r',
    k:'f',l:'m',m:'a',n:'c',o:'q',
    p:'t',q:'g',r:'i',s:'b',t:'p',
    u:'l',v:'u',w:'h',x:'o',y:'w',z:'x'
};
var str = "abcdefghijklmnopqrstuvwxyz";

var str_array = str.split('');

for( var i = 0, len = str_array.length; i < len; i++ ) {
    str_array[ i ] = charMap[ str_array[ i ] ] || str_array[ i ];
}
str = str_array.join('');

Ini juga akan meninggalkan karakter apa pun yang tidak ditemukan di peta.


2
2017-11-20 01:13



Sejak .replace() bertindak pada string, dan mengembalikan string, Anda dapat berantai beberapa menggantikan panggilan bersama:

var text = $(this).val().replace(/a/g, "z").replace(/b/g, "y").replace(/c/g, "x");

2
2017-11-19 23:59



Kode asli Anda benar, namun masalahnya adalah karena charset halaman, coba yang berikut ini:

  1. Pastikan halaman Anda disimpan sebagai UTF-8
  2. Sertakan hal berikut di header Anda

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Saya menggaruk kepala dengan masalah yang sama, ini menyelesaikan masalah saya.


0
2018-02-24 11:38