2017-06-18 65 views
0

我想將給定的Unicode字符轉換爲Emojis。 從一個函數中,我得到一個字符串,有時候它有emojis,但是作爲Unicode(就像這個\ ud83c \ uddee \ ud83c \ uddf9)。 所以我需要首先檢查這個函數是否包含這些Unicode表情符號字符,然後我需要將它們轉換爲emojis。如何檢查var是否包含unicode字符並將它們轉換爲emojis

用這行代碼,我試圖刪除這些Unicode字符,但它不起作用。 但現在我需要找到一種方法將這些Unicode字符轉換爲Emojis,而不是將它們刪除!

var fullnameWOE = fullname[1].replace(/([\uE000-\uF8FF]|\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDDFF])/g, '') 

編輯:仍然沒有找到方法來解決這個問題......我 必須補充一點,我得到這個字符串從一個php文件包含的表情符號的名稱,因此,如果有使用PHP的任何機會解決它?

+0

這些統一碼已經代表表情符號,所以沒有點把它們轉換。 –

+0

編輯:這裏是一個JavaScript的例子:'' –

+0

是啊你是對的,但我從這個函數例如字符串:「Dan \ ud83c \ uddee \ ud83c \ uddf9」,當我只提醒「\ ud83c \ uddee \ ud83c \ uddf9」時,它會被轉換爲表情符號,但是這個整個字符串不會被轉換。 –

回答

0

只是參考這個How to find whether a particular string has unicode characters (esp. Double Byte characters)檢查是否存在unicodes。

但是,爲了替換表情符號,我建議你使用字典,因爲它會更受控制。

const raw = 'This string could contain an emoticon: {{example of emoticon unicode}}'; 
 

 
const EMOJS = { 
 
    'example of emoticon unicode': 'REPLACED WITH CORRESPONDING VALUE' 
 
}; 
 

 
function compile(input, dict = EMOJS) { 
 
    return Object 
 
    .keys(dict) 
 
    .reduce(
 
     (res, emojId) => { 
 
     let tmp; 
 
     do { 
 
      tmp = res; 
 
      
 
      res = res.replace(emojId, dict[emojId]); 
 
     } while(tmp !== res); 
 
     
 
     return res; 
 
     }, 
 
     input 
 
    ) 
 
} 
 

 
console.log({input: raw, output: compile(raw)});

相關問題