-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathUnicodeEmojiMethods.java
52 lines (42 loc) · 1.88 KB
/
UnicodeEmojiMethods.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package com.ibrahimatay;
import java.util.OptionalInt;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class UnicodeEmojiMethods {
// Unicode Emoji Properties
// https://bugs.openjdk.org/browse/JDK-8303018
// JDK 21 JavaDoc for java.lang.Character
// https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Character.html
// Unicode® Technical Standard #Emoji Character Properties
// https://unicode.org/reports/tr51/#Emoji_Properties_and_Data_Files
public static void main(String[] args) {
String welcomeMsg = "Hey Java Developers! ☕️";
if(welcomeMsg.codePoints().anyMatch(Character::isEmoji)) {
System.out.println("Message contains an emoji!");
}
Matcher matcher = Pattern.compile("\\p{IsEmoji}").matcher(welcomeMsg);
if(matcher.find()) {
System.out.println("Message contains an emoji!");
}
Matcher matcher_modifier_base = Pattern.compile("\\p{IsEmoji_Modifier_Base}").matcher(welcomeMsg);
if(matcher_modifier_base.find()) {
System.out.println("Message contains an emoji modifier base!");
}
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");
}
}
}