Java 21增强对Emoji表情符号的处理了
现一个 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包含表情"); } }
除了判断字符串中是否包含表情符号之外,还能用isEmojiModifier
和isEmojiModifierBase
来判断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。第一时间了解前沿行业消息、分享深度技术干货、获取优质学习资源

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
一文聊聊代码的可读性
观点表达 上图代码中,你觉得左边实现更好,还是右边的实现更好 ?你的代码是更像左边还是更接近右边?首先说下,这个例子不是很好,但是我觉得又挺好,因为这个例子不够极端,但是针对这样的case去阐述观点,可以更加明确;我的观点,也是本文接下去的观点,是倾向于右边,当然在这个例子中,可能大家会觉得右边的代码有点没有必要的复杂化了,左边的代码非常简洁明晰,这里说下观点背后的思考: a.右边的代码更好扩展,职责边界清晰,富有层次; b.右边代码读起来更通俗,更贴近人的语言; c.右边的代码可以更快的让你知道方法的意图(这里要说下,因为例子简单,可能大家觉得左边代码也很快能get到意图,这里说下1. 如果方法实现稍微复杂一点,左边的理解难度就要高上一点;2. 从扫眼看去,还是右边的意图更直接,虽然这里例子可能差不多了几秒)虽然可能刚看个头,就会有一些意见上的分歧,但是我觉得本身这个命题还属于开放式的,如果是个封闭式的题目,相关的书应该已经去明确定义清楚如何去coding了,希望大家可以继续辩证地往下看,疑义相与析; 可读性理解 说可读性理解前,我们先来说说重构,我们经常做重构这件事情,小则一...
- 下一篇
OpenAI,请重新思考 Retrieval Assistant 的方案
作者:栾小凡 Zilliz 合伙人、技术总监 近期, OpenAI 在首届开发者大会上公布了系列最新进展,引发各大媒体和从业人员的广泛关注。 其中最引人注目的是全新推出的 GPT-4 Turbo ——一个更经济、更高效的服务版本,可以显著提升用户体验。不止如此,多模态技术的融合也开辟了前所未有的可能性,使得开发者能够在一个统一的平台上同时处理文本、图像以及其他多种类型的数据。GPT Store 的推出更是一个重要的里程碑,它为用户提供了定制化 GPT 模型的能力,这也意味着,无论是大型企业还是个人开发者,都能够享受到这项创新带来的个性化 AI 解决方案。 不过,最令人惊讶的还是 OpenAI 推出了全新的 Assistant 功能。它直接介入应用开发领域,这一变化不仅象征着 OpenAI 作为工具和平台的提供者的角色转变,还体现了它在推动技术应用方面的积极参与。新推出的 Assistants API 是一个量身定制的 AI 工具,它能够利用额外的工具来协助开发者创建更智能的 AI 助手。这个 API 不仅支持代码解释执行、函数调用和数据检索等基本功能,还提供了强大的持久化和无限长线程功...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6