您现在的位置是:首页 > 文章详情

Java 21增强对Emoji表情符号的处理了

日期:2023-11-23点击:56

现一个 Java 21 中有意思的东西!

java.Lang.Character类中增加了用于确定字符是否为 Emoji 表情符号的 API,主要包含下面六个新的静态方法:

public static boolean isEmoji(int codePoint) { return CharacterData.of(codePoint).isEmoji(codePoint); } public static boolean isEmojiPresentation(int codePoint) { return CharacterData.of(codePoint).isEmojiPresentation(codePoint); } public static boolean isEmojiModifier(int codePoint) { return CharacterData.of(codePoint).isEmojiModifier(codePoint); } public static boolean isEmojiModifierBase(int codePoint) { return CharacterData.of(codePoint).isEmojiModifierBase(codePoint); } public static boolean isEmojiComponent(int codePoint) { return CharacterData.of(codePoint).isEmojiComponent(codePoint); } public static boolean isExtendedPictographic(int codePoint) { return CharacterData.of(codePoint).isExtendedPictographic(codePoint); } 

这些静态方法通过接收字符的codePoint来判断是否为表情符号来返回boolean值。

所以,我们可以用isEmoji方法来判断字符串中是否有表情,比如:

@Test void testEmoji() { String message = "欢迎来到 www.didispace.com ❤️,要不要来杯 ☕️ ?"; if(message.codePoints().anyMatch(Character::isEmoji)) { System.out.println("Message包含表情"); } } 

除了判断字符串中是否包含表情符号之外,还能用isEmojiModifierisEmojiModifierBase来判断Emoji是否被修改和是否可以被修改:

@Test void testEmoji2() { String welcomeMsg ="欢迎来到 www.didispace.com ❤️,要不要来杯 ☕️ ?"; OptionalInt emojiOptional = welcomeMsg.codePoints().filter(Character::isEmoji).findFirst(); if (emojiOptional.isPresent()) { int emojiCodePoint = emojiOptional.getAsInt(); if (Character.isEmojiModifierBase(emojiCodePoint)) { System.out.println("Emoji can be modified"); if (Character.isEmojiModifier(emojiCodePoint)) System.out.println("Emoji is modified"); else System.out.println("Emoji has not been modified"); } else System.out.println("Emoji cannot be modified"); } else System.out.println("No emoji present"); } 

使用正则表达式

这些新方法也可以通过属性构造正则表达式来使用,比如:

String welcomeMsg = "欢迎来到 www.didispace.com ❤️,要不要来杯 ☕️ ?"; Matcher matcher = Pattern.compile("\\p{IsEmoji}").matcher(welcomeMsg); if(matcher.find()) { System.out.println("Message contains an emoji!"); } matcher = Pattern.compile("\\p{IsEmoji_Modifier_Base}").matcher(welcomeMsg); if(matcher.find()) { System.out.println("Message contains an emoji modifier base!"); } 

如果您学习过程中如遇困难?可以加入我们超高质量的技术交流群,参与交流与讨论,更好的学习与进步!另外,不要走开,关注我!持续更新Java新特性专栏

欢迎关注我的公众号:程序猿DD。第一时间了解前沿行业消息、分享深度技术干货、获取优质学习资源

原文链接:https://my.oschina.net/didispace/blog/10150864
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章