替换String中的内容所需的Jquery函数

Ada*_*dam 5 javascript

我有一个textarea,用户可以在其中键入内容,还包括表情符号,如:)或;)

当按下"已发送"时,需要解析textarea字符串以将任何表情符号转换<img>为用于显示的符号.

我可以轻松生成一个表情符号列表,并有相关的图像,如:

 ':)' - '<img src="/images/happy.jpg"/>'
 ';)' - '<img src="/images/wink.jpg"/>'
Run Code Online (Sandbox Code Playgroud)

我假设上面的内容可以放入一个关联数组中.

有人能指出我正确的方向来创建表情符号和html img标签的关联数组,然后解析一个字符串以用html img标签替换匹配的符号吗?

还有兴趣是有更好的方法来做到这一点?

谢谢

jAn*_*ndy 5

你实际上已经描述了这种行为:

var map = {
    ':)':   '<img src="/images/happy.jpg"/>',
    ';(':   '<img src="/images/wink.jpg"/>'
},
text    = document.getElementsByTagName('textarea')[ 0 ].value;

Object.keys( map ).forEach(function( ico ) {
    // escape special characters for regex
    var icoE   = ico.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1");
    // now replace actual symbols
    text       = text.replace( new RegExp(icoE, 'g'), map[ico] );
});
Run Code Online (Sandbox Code Playgroud)

示例:http://jsfiddle.net/DBfpw/2/


编辑
为了创建有效的正则表达式,我们需要转义)(

注意
上面的代码片段包含ECMAscript5特色代码.如果您需要在旧版浏览器上运行,请确保包含ES5 Shim库.

注2
对不起上面的代码并没有包含自不必任何jQuery代码.

  • 字符串替换仅替换第一次出现.请参阅http://www.tizag.com/javascriptT/javascript-string-replace.php.你必须使用正则表达式来处理你有多个相同笑脸出现的情况 (2认同)