一个能在字符串中识别出 Emoji 的简单工具
特性
支持 Unicode12 规范
基于 EBNF 状态机的 Emoji 判断,比正则表达式更易维护
准确判断含有 Emoji 的字符串长度
准确切割字符串不会断开 Emoji
长度判断
EmojiString.lengthEmojiReader.getTextLength♀11
🙂21
👱♂51
🏳️🌈61
👨👩👦👦111
在字符串中,一个 Emoji 由一个或多个 Unicode 码点(CodePoint)组成,一个码点可能由多个字符组成(取决于码点是否大于 0x010000),因此一个 Emoji 可能由数个字符组成。
很多业务都需要有字数的判断,比如用户昵称不能过长,发言内容有字数限制等等。如果不对 Emoji 进行特殊处理,往往会出现不符合用户预期的情况。
使用 EmojiReader.getTextLength 可以获取到文本的可视符号的长度,一个 Emoji 的长度为1。
//Java
String strWithEmoji = "我是一个😃";
int error = strWithEmoji.length(); //6
int correct = EmojiReader.getTextLength(strWithEmoji); //5
复制代码
//JavaScript