2015-04-29 198 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