Java21增強(qiáng)對(duì)Emoji表情符號(hào)處理示例詳解
Java 21
現(xiàn)一個(gè) Java 21 中有意思的東西!
在java.Lang.Character類(lèi)中增加了用于確定字符是否為 Emoji 表情符號(hào)的 API,主要包含下面六個(gè)新的靜態(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)方法通過(guò)接收字符的codePoint來(lái)判斷是否為表情符號(hào)來(lái)返回boolean值。
isEmoji方法
所以,我們可以用isEmoji方法來(lái)判斷字符串中是否有表情,比如:
@Test
void testEmoji() {
String message = "歡迎來(lái)到 www.didispace.com ??,要不要來(lái)杯 ?? ?";
if(message.codePoints().anyMatch(Character::isEmoji)) {
System.out.println("Message包含表情");
}
}除了判斷字符串中是否包含表情符號(hào)之外,還能用isEmojiModifier和isEmojiModifierBase來(lái)判斷Emoji是否被修改和是否可以被修改:
@Test
void testEmoji2() {
String welcomeMsg ="歡迎來(lái)到 www.didispace.com ??,要不要來(lái)杯 ?? ?";
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");
}使用正則表達(dá)式
這些新方法也可以通過(guò)屬性構(gòu)造正則表達(dá)式來(lái)使用,比如:
String welcomeMsg = "歡迎來(lái)到 www.didispace.com ??,要不要來(lái)杯 ?? ?";
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增強(qiáng)對(duì)Emoji表情符號(hào)處理示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Java處理Emoji表情符號(hào)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Activiti如何動(dòng)態(tài)獲取流程圖過(guò)程詳解
這篇文章主要介紹了Activiti如何動(dòng)態(tài)獲取流程圖過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
JAVA線上常見(jiàn)問(wèn)題排查手段(小結(jié))
這篇文章主要介紹了JAVA線上常見(jiàn)問(wèn)題排查手段(小結(jié)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
學(xué)習(xí)spring事務(wù)與消息隊(duì)列
這篇文章主要為大家詳細(xì)介紹了spring事務(wù)與消息隊(duì)列,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10
SpringBoot常用讀取配置文件的3種方法小結(jié)
本文主要介紹了SpringBoot常用讀取配置文件的3種方法小結(jié),主要包括@Value讀取配置文件,@ConfigurationProperties 讀取配置文件和讀取配置文件中的List,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10
Java中的排序與內(nèi)部比較器Compareable解析
這篇文章主要介紹了Java中的排序與內(nèi)部比較器Compareable解析,一般沒(méi)有特殊要求時(shí),直接調(diào)用(底層默認(rèn)的升序排列)就可以得到想要的結(jié)果,所謂的 sort 方法排序底層都是基于這兩種排序,故如果需要設(shè)計(jì)成所想要的排序就需要了解底層排序原理,需要的朋友可以參考下2023-11-11
Java實(shí)現(xiàn)自動(dòng)壓縮文件并加密的方法示例
這篇文章主要介紹了Java實(shí)現(xiàn)自動(dòng)壓縮文件并加密的方法,涉及java針對(duì)文件進(jìn)行zip壓縮并加密的相關(guān)操作技巧,需要的朋友可以參考下2018-01-01
Spring?Boot:Idea從零開(kāi)始初始化后臺(tái)項(xiàng)目的教程
這篇文章主要介紹了Spring?Boot:Idea從零開(kāi)始初始化后臺(tái)項(xiàng)目的教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12

