All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.dromara.hutool.extra.emoji.EmojiUtil Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2023 looly([email protected])
 * Hutool is licensed under Mulan PSL v2.
 * You can use this software according to the terms and conditions of the Mulan PSL v2.
 * You may obtain a copy of Mulan PSL v2 at:
 *          http://license.coscl.org.cn/MulanPSL2
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PSL v2 for more details.
 */

package org.dromara.hutool.extra.emoji;

import com.vdurmont.emoji.Emoji;
import com.vdurmont.emoji.EmojiManager;
import com.vdurmont.emoji.EmojiParser;
import com.vdurmont.emoji.EmojiParser.FitzpatrickAction;

import java.util.List;
import java.util.Set;

/**
 * 基于https://github.com/vdurmont/emoji-java的Emoji表情工具类
 * 

* emoji-java文档以及别名列表见:... * * @author looly * @since 4.2.1 */ public class EmojiUtil { /** * 是否为Emoji表情的Unicode符 * * @param str 被测试的字符串 * @return 是否为Emoji表情的Unicode符 */ public static boolean isEmoji(final String str) { return EmojiManager.isEmoji(str); } /** * 是否包含Emoji表情的Unicode符 * * @param str 被测试的字符串 * @return 是否包含Emoji表情的Unicode符 * @since 4.5.11 */ public static boolean containsEmoji(final String str) { return EmojiManager.containsEmoji(str); } /** * 通过tag方式获取对应的所有Emoji表情 * * @param tag tag标签,例如“happy” * @return Emoji表情集合,如果找不到返回null */ public static Set getByTag(final String tag) { return EmojiManager.getForTag(tag); } /** * 通过别名获取Emoji * * @param alias 别名,例如“smile” * @return Emoji对象,如果找不到返回null */ public static Emoji get(final String alias) { return EmojiManager.getForAlias(alias); } /** * 将子串中的Emoji别名(两个":"包围的格式)和其HTML表示形式替换为为Unicode Emoji符号 *

* 例如: * *

	 *  {@code :smile:}  替换为 {@code 😄}
	 * {@code 😄} 替换为 {@code 😄}
	 * {@code :boy|type_6:} 替换为 {@code 👦🏿}
	 * 
* * @param str 包含Emoji别名或者HTML表现形式的字符串 * @return 替换后的字符串 */ public static String toUnicode(final String str) { return EmojiParser.parseToUnicode(str); } /** * 将字符串中的Unicode Emoji字符转换为别名表现形式(两个":"包围的格式) *

* 例如: {@code 😄} 转换为 {@code :smile:} * *

* {@link FitzpatrickAction}参数被设置为{@link FitzpatrickAction#PARSE},则别名后会增加"|"并追加fitzpatrick类型 *

* 例如:{@code 👦🏿} 转换为 {@code :boy|type_6:} * *

* {@link FitzpatrickAction}参数被设置为{@link FitzpatrickAction#REMOVE},则别名后的"|"和类型将被去除 *

* 例如:{@code 👦🏿} 转换为 {@code :boy:} * *

* {@link FitzpatrickAction}参数被设置为{@link FitzpatrickAction#IGNORE},则别名后的类型将被忽略 *

* 例如:{@code 👦🏿} 转换为 {@code :boy:🏿} * * @param str 包含Emoji Unicode字符的字符串 * @return 替换后的字符串 */ public static String toAlias(final String str) { return toAlias(str, FitzpatrickAction.PARSE); } /** * 将字符串中的Unicode Emoji字符转换为别名表现形式(两个":"包围的格式),别名后会增加"|"并追加fitzpatrick类型 *

* 例如:{@code 👦🏿} 转换为 {@code :boy|type_6:} * * @param str 包含Emoji Unicode字符的字符串 * @param fitzpatrickAction {@link FitzpatrickAction} * @return 替换后的字符串 */ public static String toAlias(final String str, final FitzpatrickAction fitzpatrickAction) { return EmojiParser.parseToAliases(str, fitzpatrickAction); } /** * 将字符串中的Unicode Emoji字符转换为HTML 16进制表现形式 *

* 例如:{@code 👦🏿} 转换为 {@code 👦} * * @param str 包含Emoji Unicode字符的字符串 * @return 替换后的字符串 */ public static String toHtmlHex(final String str) { return toHtml(str, true); } /** * 将字符串中的Unicode Emoji字符转换为HTML表现形式(Hex方式) *

* 例如:{@code 👦🏿} 转换为 {@code 👦} * * @param str 包含Emoji Unicode字符的字符串 * @return 替换后的字符串 */ public static String toHtml(final String str) { return toHtml(str, false); } /** * 将字符串中的Unicode Emoji字符转换为HTML表现形式,例如: *

	 * 如果为hex形式,{@code 👦🏿} 转换为 {@code 👦}
	 * 否则,{@code 👦🏿} 转换为 {@code 👦}
	 * 
* * @param str 包含Emoji Unicode字符的字符串 * @param isHex 是否hex形式 * @return 替换后的字符串 * @since 5.7.21 */ public static String toHtml(final String str, final boolean isHex) { return isHex ? EmojiParser.parseToHtmlHexadecimal(str) : EmojiParser.parseToHtmlDecimal(str); } /** * 去除字符串中所有的Emoji Unicode字符 * * @param str 包含Emoji字符的字符串 * @return 替换后的字符串 */ public static String removeAllEmojis(final String str) { return EmojiParser.removeAllEmojis(str); } /** * 提取字符串中所有的Emoji Unicode * * @param str 包含Emoji字符的字符串 * @return Emoji字符列表 */ public static List extractEmojis(final String str) { return EmojiParser.extractEmojis(str); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy