我有一个textarea,用户可以在其中键入内容,还包括表情符号,如:)或;)
当按下"已发送"时,需要解析textarea字符串以将任何表情符号转换<img>为用于显示的符号.
我可以轻松生成一个表情符号列表,并有相关的图像,如:
':)' - '<img src="/images/happy.jpg"/>'
';)' - '<img src="/images/wink.jpg"/>'
Run Code Online (Sandbox Code Playgroud)
我假设上面的内容可以放入一个关联数组中.
有人能指出我正确的方向来创建表情符号和html img标签的关联数组,然后解析一个字符串以用html img标签替换匹配的符号吗?
还有兴趣是有更好的方法来做到这一点?
谢谢
你实际上已经描述了这种行为:
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代码.
| 归档时间: |
|
| 查看次数: |
1489 次 |
| 最近记录: |