- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- public class EmojiToString {
- /**
- * 将 str 中的 emoji 表情转为 byte 数组
- *
- * @param str
- * @return
- */
- public static String resolveToByteFromEmoji(String str) {
- if(str != null && str != ""){
- Pattern pattern = Pattern
- .compile("[^(\u2E80-\u9FFF\\w\\s`~!@#\\$%\\^&\\*\\(\\)_+-?()--=\\[\\]{}\\|;.,,《》":;"!......':'\"<,>\\.?/\\\\*)]");
- Matcher matcher = pattern.matcher(str);
- StringBuffer sb2 = new StringBuffer();
- while (matcher.find()) {
- matcher.appendReplacement(sb2, resolveToByte(matcher.group(0)));
- }
- matcher.appendTail(sb2);
- return sb2.toString();
- }
- return str;
- }
- /**
- * 将 str 中的 byte 数组类型的 emoji 表情转为正常显示的 emoji 表情
- *
- * @param str
- * @return
- */
- public static String resolveToEmojiFromByte(String str) {
- if(str != null && str != ""){
- Pattern pattern2 = Pattern.compile("<:([[-]\\d*[,]]+):>");
- Matcher matcher2 = pattern2.matcher(str);
- StringBuffer sb3 = new StringBuffer();
- while (matcher2.find()) {
- matcher2.appendReplacement(sb3, resolveToEmoji(matcher2.group(0)));
- }
- matcher2.appendTail(sb3);
- return sb3.toString();
- }
- return str;
- }
- private static String resolveToByte(String str) {
- byte[] b = str.getBytes();
- StringBuffer sb = new StringBuffer();
- sb.append("<:");
- for (int i = 0; i <b.length; i++) {
- if (i < b.length - 1) {
- sb.append(Byte.valueOf(b[i]).toString() + ",");
- } else {
- sb.append(Byte.valueOf(b[i]).toString());
- }
- }
- sb.append(":>");
- return sb.toString();
- }
- private static String resolveToEmoji(String str) {
- str = str.replaceAll("<:", "").replaceAll(":>","");
- String[] s = str.split(",");
- byte[] b = new byte[s.length];
- for (int i = 0; i < s.length; i++) {
- b[i] = Byte.valueOf(s[i]);
- }
- return new String(b);
- }
- }
来源: http://www.bubuko.com/infodetail-2862923.html