java 处理emoji表情

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 (< 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 HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java采坑之路

判断相等字符串判断相等        String str1  null;        String str2  "java金融";       // str1.equals(str2);  错误的写法        str2.equals(str1); // 常量写前面        Objects.equ

java判断字符串是否为数字或中文或字母

1.判断字符串是否仅为数字:1用JAVA自带的函数public static boolean isNumeric(String str){  for (int i  str.length();i0;){      if (!Character.isDigit(str.charAt(i))){

string.Compare用法

string.Compare方法,用来比较2个字符串值得大小string.Compare(strA,strB,true);返回值:1:str1大于str20:str1等于str2\1:str1小于str2publicvoidCompareString(stringstrA,stringstrB)

java存储emoji表情解决方案

1、问题产生情况  在开发IM时有些有用的头像用了emoji表情或者聊天的时候用了emoji表情,然而mysql数据库用的编码是utf8\_general\_ci,就是utf8编码,结果也就报错误了。emoji表情存不了在数据库。  java.sql.SQLException:Incorrectstringvalue:'\\

java字符串比较和jdkequals源码分析

 package com.cnse.demo;/  比较两个字符串相等 /public class StringTest { public static void main(String args) {  int checkLength  0;  String str