Browse Source

Merge pull request #1112 from akiyamaneko/EMOJ_IMPROVE

优化EMOJ查询逻辑
Golden Looly 5 years ago
parent
commit
0f11fdb25a

+ 1 - 16
hutool-extra/src/main/java/cn/hutool/extra/emoji/EmojiUtil.java

@@ -38,22 +38,7 @@ public class EmojiUtil {
 	 * @since 4.5.11
 	 */
 	public static boolean containsEmoji(String str) {
-		if (str == null) {
-			return false;
-		}
-		final char[] chars = str.toCharArray();
-		EmojiTrie.Matches status;
-		for (int i = 0; i < chars.length; i++) {
-			for (int j = i + 1; j <= chars.length; j++) {
-				status = EmojiManager.isEmoji(Arrays.copyOfRange(chars, i, j));
-				if (status.impossibleMatch()) {
-					break;
-				} else if (status.exactMatch()) {
-					return true;
-				}
-			}
-		}
-		return false;
+		return EmojiManager.containsEmoji(str);
 	}
 
 	/**

+ 9 - 0
hutool-extra/src/test/java/cn/hutool/extra/emoji/EmojiUtilTest.java

@@ -16,4 +16,13 @@ public class EmojiUtilTest {
 		String alias = EmojiUtil.toAlias("😄");
 		Assert.assertEquals(":smile:", alias);
 	}
+	
+	@Test
+	public void containsEmojiTest() {
+		boolean containsEmoji = EmojiUtil.containsEmoji("测试一下是否包含EMOJ:😄");
+		Assert.assertEquals(containsEmoji, true);
+		boolean notContainsEmoji = EmojiUtil.containsEmoji("不包含EMOJ:^_^");
+		Assert.assertEquals(notContainsEmoji, false);
+
+	}
 }