Java21增強對Emoji表情符號處理示例詳解
Java 21
現(xiàn)一個 Java 21 中有意思的東西!
在java.Lang.Character
類中增加了用于確定字符是否為 Emoji 表情符號的 API,主要包含下面六個新的靜態(tài)方法:
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); }
這些靜態(tài)方法通過接收字符的codePoint
來判斷是否為表情符號來返回boolean
值。
isEmoji方法
所以,我們可以用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!"); }
以上就是Java21增強對Emoji表情符號處理示例詳解的詳細內(nèi)容,更多關于Java處理Emoji表情符號的資料請關注腳本之家其它相關文章!
相關文章
Java中的排序與內(nèi)部比較器Compareable解析
這篇文章主要介紹了Java中的排序與內(nèi)部比較器Compareable解析,一般沒有特殊要求時,直接調(diào)用(底層默認的升序排列)就可以得到想要的結果,所謂的 sort 方法排序底層都是基于這兩種排序,故如果需要設計成所想要的排序就需要了解底層排序原理,需要的朋友可以參考下2023-11-11Spring?Boot:Idea從零開始初始化后臺項目的教程
這篇文章主要介紹了Spring?Boot:Idea從零開始初始化后臺項目的教程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12