import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Emoji转换工具类
*
* @version $ID$
* @since 2018/11/12 13:44
*/
public class EmojiUtil {
static final Logger LOGGER = LoggerFactory.getLogger(EmojiUtil.class);
/**
* emoji表情转换成字符串
*
* @param str
*
* @return
*
* @throws UnsupportedEncodingException
*/
public static String emojiEncode(String str) throws UnsupportedEncodingException {
String patternString = "([\\x{10000}-\\x{10ffff}\ud800-\udfff])";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(str);
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
try {
matcher.appendReplacement(sb, "[[" + URLEncoder.encode(matcher.group(1), "UTF-8") + "]]");
} catch (UnsupportedEncodingException e) {
LOGGER.error("emojiEncode error", e);
throw e;
}
}
matcher.appendTail(sb);
LOGGER.debug("emojiEncode " + str + " to " + sb.toString() + ", len:" + sb.length());
return sb.toString();
}
/**
* 将包含字符串转换成emoji表情
* @param str
*
* @return
*
* @throws UnsupportedEncodingException
* exception
*/
public static String emojiDecode(String str) throws UnsupportedEncodingException {
String patternString = "\\[\\[(.*?)\\]\\]";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(str);
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
try {
matcher.appendReplacement(sb, URLDecoder.decode(matcher.group(1), "UTF-8"));
} catch (UnsupportedEncodingException e) {
LOGGER.error("emojiDecode error", e);
throw e;
}
}
matcher.appendTail(sb);
LOGGER.debug("emojiDecode " + str + " to " + sb.toString());
return sb.toString();
}
}
Emoji表情转换工具类
最新推荐文章于 2022-06-13 20:04:03 发布
本文介绍了一个用于处理emoji表情的Java工具类,该工具类能够实现emoji表情与字符串之间的相互转换,利用正则表达式和编码解码技术,适用于文本处理和网络传输中emoji的标准化。
7747

被折叠的 条评论
为什么被折叠?



