Emoji表情

63 阅读1分钟

背景

  • 在项目中会出现用户需要在内容中输入Emoji表情、在详情中回显输入的Emoji表情的需求
  • 数据库无法直接存储Emoji表情

实现

网上通过js来实现表情转换的帖子,但是我实际使用后发现,总会有问题(要不就是个别转换失败,要不就是表情更新后转换功能失效)

所以我建议还是使用第三方库来实现表情的转换

安装插件

npm i emoji-regex

封装函数

import emojiRegex from 'emoji-regex';
// 1. 检测字符串是否包含emoji表情
export function containsEmoji(text) {
  const regex = emojiRegex();
  return regex.test(text);
}
// 2. 将emoji表情转换为字符串表示
export function convertEmojiToString(text) {
  const regex = emojiRegex();
  return text.replace(regex, (emoji) => `:emoji_${emoji.codePointAt(0).toString(16)}:`);
}
// 3. 判断字符串中是否包含已转换成string的emoji表情字符
export function containsConvertedEmojiString(text) {
  const convertedEmojiRegex = /:emoji_[a-f0-9]+:/g;
  return convertedEmojiRegex.test(text);
}
// 4. 将字符串中已转换成string的emoji表情字符转换回表情
export function convertStringToEmoji(text) {
  return text.replace(/:emoji_([a-f0-9]+):/g, (_, hex) => String.fromCodePoint(parseInt(hex, 16)));
}

四个函数功能:

  • 函数1:检测内容中是否包含Emoji表情
  • 函数2:将包含Emoji表情的内容中的Emoji表情转换成数据库可存储的str
  • 函数3:判断内容中是否包含被转换后的Emoji表情str
  • 函数4:将内容中被转换后的Emoji表情str重新转换回Emoji表情