Javascript 用数组键/值替换字符

Javascript 用数组键/值替换字符,javascript,jquery,Javascript,Jquery,我尝试根据替换地图替换一些特殊字符(表情符号)。 我写了这段代码,但仍然不起作用 var char_map = { '■': 'e', '­♥': 'a', '♦': 'm', }; $.fn.map_replace = function() { $(this).html(function(i, content) { $.each(char_map, function(key, value) { content = con

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

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


感谢您的帮助:)

一种方法是使用转义码而不是文字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();


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

一种方法是使用转义码而不是文字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();


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

您在文件上使用的编码是什么?页面是UTF-8编码的。您的代码实际上可以工作-只是替换只替换字符的第一个实例(请注意,“Lorem”每次都正确更改)。不幸的是,在早上的这个时候,让这样的角色与regex一起工作是我无法理解的,但这是你的问题。您可以使用在任何地方都可以找到的许多“replaceAll”代码段中的任意一个来提供所需的功能。此外,第4行有一个错误-尾随逗号将在IE中中断。您在文件上使用的编码是什么?页面是UTF-8编码的。您的代码实际上正在工作-只是替换只替换字符的第一个实例(请注意,“Lorem”每次都正确更改)。不幸的是,在早上的这个时候,让这样的角色与regex一起工作是我无法理解的,但这是你的问题。您可以使用在任何地方都可以找到的许多“replaceAll”代码段中的任意一个来提供所需的功能。另外,第4行有一个错误-尾随的逗号将在IE中中断。非常感谢!太好了,非常感谢!太好了。