0

置き換えマップに基づいて、いくつかの特殊文字(絵文字)を置き換えようとしています。
このコードを書きましたが、それでも機能しません。

var char_map = {
    '■': 'e',
    '­♥': 'a',
    '♦': 'm',
};

$.fn.map_replace = function() {
    $(this).html(function(i, content) {
        $.each(char_map, function(key, value) {
            content = content.replace(key, value);
        });
        return content;
    });
};

$(".comment").map_replace();

jsFiddleのこのコード

助けてくれてありがとう:)

4

1 に答える 1

4

これを行う1つの方法は、リテラルUnicode文字の代わりにエスケープコードを使用し、正規表現を使用してそれらを置き換えることです。

var char_map = {
    'e' : /\u25A0/g,
    'a' : /\u2665/g,
    'm' : /\u2666/g,
};

$.fn.map_replace = function() {
    $(this).html(function(i, content) {
        $.each(char_map, function(character, regex) {
            content = content.replace(regex, character);
        });
        return content;
    });
};

$(".comment").map_replace();

jsFiddleを更新しました

最初のアプローチが機能しなかった理由は、デフォルトではString.replace()が検索式の最初の出現のみを置き換えるためです。正規表現を使用し、「g」(「グローバル」の略)フラグを指定することで、すべての一致を置き換えるように指示できます。

于 2012-09-03T07:04:51.000 に答える