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 conversion tools * * @version $ID$ * @since 2018/11/12 13:44 */ public class EmojiUtil { static final Logger LOGGER = LoggerFactory.getLogger(EmojiUtil.class); /** * Convert emoji expressions into strings * * @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); Matches matches = 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(); } /** * Convert the containing string into emoji expressions * @param str * * @return * * @throws UnsupportedEncodingException * exception */ public static String emojiDecode(String str) throws UnsupportedEncodingException { String patternString = "\\[\\[(.*?)\\]\\]"; Pattern pattern = Pattern.compile(patternString); Matches matches = 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 expression conversion tool
Guess you like
Origin blog.csdn.net/A___B___C/article/details/83992595
Recommended
Ranking