Поиск и замена нескольких специальных символов с помощью jquery - PullRequest
4 голосов
/ 20 ноября 2010

В настоящее время это будет брать текст из текстовой области и заменять все символы, указанные в 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);

});

Проблема в том, что он не распознает специальные символы.Таким образом, он заменит «b» и «c», но не «Å» и «å».

Есть идеи?

Ответы [ 3 ]

2 голосов
/ 20 ноября 2010

Теперь, когда я лучше понимаю требования, вы можете просто создать карту символов для замен следующим образом:

Пример: 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('');

При этом также останутся одни персонажи, которых нет на карте.

2 голосов
/ 20 ноября 2010

Поскольку .replace() действует на строку и возвращает строку, вы можете объединить несколько вызовов замены вместе:

var text = $(this).val().replace(/a/g, "z").replace(/b/g, "y").replace(/c/g, "x");
0 голосов
/ 24 февраля 2016

Ваш оригинальный код правильный, однако проблема связана с кодировкой страницы, попробуйте следующее:

  1. Убедитесь, что ваша страница сохранена как UTF-8
  2. Включите в заголовок следующее

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

Я царапал голову той же проблемой, это решило мою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...