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

一种方法是使用转义码而不是文字 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”(代表“global”)标志,您可以告诉它替换所有匹配项。

于 2012-09-03T07:04:51.000 回答