使用jquery搜索并替换多个特殊字符

时间:2010-11-19 23:57:13

标签: jquery regex replace

目前,这将从textarea获取文本并替换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 个答案:

答案 0 :(得分:2)

由于.replace()作用于字符串并返回字符串,因此您可以将多个替换调用链接在一起:

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

答案 1 :(得分:2)

现在我已经更好地理解了这些要求,你可以创建一个像这样的替换字符的地图:

示例: 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 :(得分:0)

您的原始代码是正确的,但问题是由于页面的字符集,请尝试以下操作:

  1. 确保您的网页保存为UTF-8
  2. 在标题中包含以下内容
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    我头疼同样的问题,这解决了我的问题。