如何用javascript替换字符串?

Dam*_*ano 5 javascript

我有这个功能:

function emoticons(text){
    var url = "http://www.domain.it/images/smilies/";
    var emt = {
       ":D"  : 'icon_e_biggrin.gif',
       ":-D" : 'icon_e_biggrin.gif',       
       ":)"  : 'icon_e_smile.gif',
       ":-)" : 'icon_e_smile.gif',       
       ";)"  : 'icon_e_wink.gif',
       "';-)" : 'icon_e_wink.gif',

       ":("  : 'icon_e_sad.gif',
       ":-(" : 'icon_e_sad.gif',
       ":o"  : 'icon_e_surprised.gif',
       ":?"  : 'icon_e_confused.gif',
       "8-)" : 'icon_cool.gif',

       ":x"  : 'icon_mad.gif',
       ":P"  : 'icon_razz.gif'
    };

    for (smile in emt){        
        text   = text.replace(smile, '<img src="' + url + emt[smile] + '" class="emoticons" />');
    }

    return (text);
}
Run Code Online (Sandbox Code Playgroud)

如你所知.replace()转换第一次出现,如何在文本中替换多个表情符号?如何更改此功能?

非常感谢你!

mae*_*ics 4

您可以将每个表情符号字符串转换为全局正则表达式,当与 String#replace 方法一起使用时,它将替换所有出现的情况:

function emoticons(text){
  var url = "http://www.domain.it/images/smilies/";
  var emt = {
    /\:D/g:   'icon_e_biggrin.gif',
    /\:\-D/g: 'icon_e_biggrin.gif',
//...
Run Code Online (Sandbox Code Playgroud)

不过,您必须小心转义表情符号文本中的特殊字符。