使用数组键/值替换字符

时间:2012-09-03 06:53:56

标签: javascript jquery

我尝试根据替换地图替换一些特殊字符(表情符号) 我写了这段代码,但它仍然不起作用..

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();

This code on jsFiddle

感谢您的帮助:)

1 个答案:

答案 0 :(得分: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();

Updated jsFiddle

初始方法不起作用的原因是默认情况下String.replace()仅替换搜索表达式的第一个次出现。通过使用正则表达式并指定“g”(用于“全局”)标志,您可以告诉它替换所有匹配。