2017-06-18 76 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)});

相关问题