2015-04-29 259 views
2

我有一些文字,可能包括文字表情(例如:;),:()。上面的例子我想用它们相应的表情符号Unicode字符()替换它们。用表情符号替换表情符号

我的意图是然后在这个文本上运行twimoji。

我知道我可以找到并替换,但我宁愿使用已经预先构建的东西,它已经这样做了。

任何已经实现了这个功能的库?我相信常见的表情符号列表是这里最大的工作。

+2

https://github.com/kof/emoticons – OddDev

+1

@OddDev我不认为库替换文本表情符号与Unicode字符。 –

+0

@Moogs,投资这5分钟让它这样做会很痛苦吗? – OddDev

回答

2

不知道是否已经有一个库将文本表情符号转换为unicode字符,但以下是您可以自己实现的示例。

var map = { 
    "<3": "\u2764\uFE0F", 
    "</3": "\uD83D\uDC94", 
    ":D": "\uD83D\uDE00", 
    ":)": "\uD83D\uDE03", 
    ";)": "\uD83D\uDE09", 
    ":(": "\uD83D\uDE12", 
    ":p": "\uD83D\uDE1B", 
    ";p": "\uD83D\uDE1C", 
    ":'(": "\uD83D\uDE22" 
}; 

function escapeSpecialChars(regex) { 
    return regex.replace(/([()[{*+.$^\\|?])/g, '\\$1'); 
} 

document.getElementById('textarea').oninput = function() { 
    for (var i in map) { 
    var regex = new RegExp(escapeSpecialChars(i), 'gim'); 
    this.value = this.value = this.value.replace(regex, map[i]); 
    } 
}; 

http://jsfiddle.net/04zv3ozh/18/

+0

心脏中的'\ uFE0F'会导致添加第二个不可见的Unicode字符 - 我必须回退两次以删除心脏。基本上没有必要。 – Xufox

+0

我明白这和运行'regex.replace'一样简单。我的问题更多地指向已经完成的解决方案,或者我可以使用的完整表格或情绪,而不是自己手动列出维护此列表。 – WhyNotHugo

+0

也许使用'oninput'而不是'onkeyup' – math2001