如何检查var是否包含unicode字符并将其转换为emojis

时间:2017-06-18 15:29:51

标签: javascript unicode replace

我想将给定的Unicode Chars转换为Emojis。 从一个函数,我得到一个字符串,有时它有emojis但作为Unicode(像这样\ ud83c \ uddee \ ud83c \ uddf9)。 所以我需要首先检查这个函数是否包含这些Unicode表情符号字符,然后我需要将它们转换为表情符号。

使用这行代码,我试图删除这些Unicode字符,但它不起作用。 但现在我需要找到一种方法将这些Unicode字符转换为Emojis而不是删除它们!

var fullnameWOE = fullname[1].replace(/([\uE000-\uF8FF]|\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDDFF])/g, '')
编辑:仍然没有找到解决这个问题的方法...... 我必须补充一点,我从php文件中获取包含表情符号的字符串,所以如果有机会使用php来解决它?

2 个答案:

答案 0 :(得分: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)});




答案 1 :(得分:0)

您要去的地方

function containsNonLatinCodepoints(s) {
    return /[^\u0000-\u00ff]/.test(s);
}