1public class EmojiUtil { 2 /** 3 * 将str中的emoji表情转为byte数组 4 * 5 * @param str 6 * @return 7 */ 8 public static String resolveToByteFromEmoji(String str) { 9 Pattern pattern = Pattern 10 .compile("[^(\u2E80-\u9FFF\\w\\s`~!@#\\$%\\^&\\*\\(\\)_+-?()——=\\[\\]{}\\|;。,、《》”:;“!……’:'\"<,>\\.?/\\\\*)]"); 11 Matcher matcher = pattern.matcher(str); 12 StringBuffer sb2 = new StringBuffer(); 13 while (matcher.find()) { 14 matcher.appendReplacement(sb2, resolveToByte(matcher.group(0))); 15 } 16 matcher.appendTail(sb2); 17 return sb2.toString(); 18 } 19 20 /** 21 * 将str中的byte数组类型的emoji表情转为正常显示的emoji表情 22 * 23 * @param str 24 * @return 25 */ 26 public static String resolveToEmojiFromByte(String str) { 27 Pattern pattern2 = Pattern.compile("<:([[-]\\d*[,]]+):>"); 28 Matcher matcher2 = pattern2.matcher(str); 29 StringBuffer sb3 = new StringBuffer(); 30 while (matcher2.find()) { 31 matcher2.appendReplacement(sb3, resolveToEmoji(matcher2.group(0))); 32 } 33 matcher2.appendTail(sb3); 34 return sb3.toString(); 35 } 36 37 private static String resolveToByte(String str) { 38 byte[] b = str.getBytes(); 39 StringBuffer sb = new StringBuffer(); 40 sb.append("<:"); 41 for (int i = 0; i < b.length; i++) { 42 if (i < b.length - 1) { 43 sb.append(Byte.valueOf(b[i]).toString() + ","); 44 } else { 45 sb.append(Byte.valueOf(b[i]).toString()); 46 } 47 } 48 sb.append(":>"); 49 return sb.toString(); 50 } 51 52 private static String resolveToEmoji(String str) { 53 str = str.replaceAll("<:", "").replaceAll(":>", ""); 54 String[] s = str.split(","); 55 byte[] b = new byte[s.length]; 56 for (int i = 0; i < s.length; i++) { 57 b[i] = Byte.valueOf(s[i]); 58 } 59 return new String(b); 60 } 61}
java 处理emoji表情
Wesley13
2021-10-11
1284 1 0
点赞
收藏
评论区
加载中...