java 如何将String字符串中的十六进制转换为汉字
偶然在写代码中,遇到String字符串里面存在非常多的16进制数据,如下图,需要将红框中的十六进制数据转换为对应的汉字,方便阅读。
采用的逻辑思路为,正则表达式匹配出所有的十六进制数据,然后进行转换为汉字,转换成功以后,用汉字替换相应的十六进制数据,然后再转换为String字符串,具体代码见下图
/*** utf-8十六进制编码为汉字**/ public static String hexToString(String str) {Pattern pattern = Pattern.compile("(\\\\\\\\x[0-9A-Fa-f]{2})+");Matcher matcher = pattern.matcher(str);Map<String,String> result = new TreeMap<>();List<String> listKey = new LinkedList<>();while (matcher.find()) {String group = matcher.group(0);String groupReplace = group.replaceAll("\\\\\\\\x", "");byte[] b = new byte[groupReplace.length() / 2];// 每两个字符为一个十六进制确定数字长度for (int i = 0; i < b.length; i++) {// 将字符串每两个字符做为一个十六进制进行截取String a = groupReplace.substring(i * 2, i * 2 + 2);b[i] = (byte) Integer.parseInt(a, 16);// 将如e4转成十六进制字节,放入数组}try {// 将字节数字以utf-8编码以字符串形式输出String ccc = new String(b, "UTF-8");result.put(ccc,group);listKey.add(ccc);} catch (UnsupportedEncodingException e) {e.printStackTrace();}}if(listKey != null && listKey.size() > 0){listKey.sort(Comparator.reverseOrder());for (String key : listKey ) {String value = result.get(key);str = str.replace(value, key);}}return str; }
/*** Unicode转 汉字字符串** @param str* \u6728* @return '木' 26408*/ public static String unicodeToString(String str) {Pattern pattern = Pattern.compile("(\\\\\\\\u(\\p{XDigit}{4}))");Matcher matcher = pattern.matcher(str);char ch;while (matcher.find()) {// group 6728String group = matcher.group(2);// ch:'木' 26408ch = (char) Integer.parseInt(group, 16);// group1 \u6728String group1 = matcher.group(1);str = str.replace(group1, ch + "");}return str; }
测试数据及结果如下图
java 如何将String字符串中的十六进制转换为汉字相关推荐
- String字符串中数字排序(Java)
String字符串中数字排序 样例 输入: String s1 ="10 52 36 47 89 25 9 66 85 86 39"; 排序后输出: 9 10 25 36 39 4 ...
- Java读取文件的内容到String字符串中
Java读取文件的内容到String字符串中 将文件读取到String有很多方法可以在Java中将文件读取到String.在本教程中学习以下几种方法. 使用BufferedReader将文件读取到字符 ...
- Java:判断一个字符串中是否存在另一个字符子串以及判断一个字符串中是否存在指定字符
Java:判断一个字符串中包含指定字符子串,判断一个字符串中存在指定字符 字符串的contains方法可以判断一个字符串中是否存在另一个字符子串,示例如下 String Str = "Hel ...
- java利用正则截取字符串中的数字
java利用正则截取字符串中的数字 String str = "xxx第47297章33";String regex = "\\d*";Pattern p = ...
- java ==号比较String字符串的地址
/*** java ==号比较String字符串的地址* <p>* String类代表字符串. Java程序中的所有字符串文字(例如"abc" )都被实现为此类的实例. ...
- c语言十六进制字符串转整数,C语言-提取字符串中的十六进制数字并转换为一个十进制整数输出...
问题描述:提取字符串中的十六进制数字并转换为一个十进制整数输出 源代码: /*十六进制转换成十进制*/ #include int main(void) { int i,k; char hexad[80 ...
- Java 11:String类中的新方法
Java 11:String类中的新方法 Java 11没有很多特定于语言的功能.因此,令人惊讶的是,在Java String Class中引入了6种新方法. Java 11 String类新方法 让 ...
- java用正则表达式判断字符串中是否仅包含英文字母、数字和汉字_灵思致远Leansmall的博客-CSDN博客_java判断字符串只包含数字字母
import java.util.regex.Matcher; import java.util.regex.Pattern;public class StrValidate {// 纯数字priva ...
- java中把一个字符串中大写字母转换为小写,小写字母转换为大写
java中把一个字符串中大写字母转换为小写,小写字母转换为大写 观看提示: 这里提供2中思维,但是第一种是正确的,第二种是错误的:第二种的思维可以了解了解,但是需要注意的是如果某个字符串定义为Stri ...
最新文章
- C++中的友元函数friend
- iOS内实现h5原生开发
- 如何判断两个单向链表是否有相交,并找出交点
- Ubuntu15.10安装XAMPP
- 互联网公司忽悠员工的黑话
- 《深入.NET平台和C# 编程》内部测试 笔试题
- head first servlet jsp 学习笔记
- NATAPP本地地址映射到外网
- node --- [express项目] 开发环境下使用morgan控制台输出访问信息
- perlin噪声函数
- 4 谐波_谐波的基础知识
- 【X264系列】之不同强度的printf
- 盘点前端HTML基础知识
- 极大似然函数求解_极大似然估计的理解与应用
- 网络安全等级保护云计算安全防护技术体系设计
- Ubuntu16.04安装谷歌浏览器
- 用 SwiftUI 编写真正的 app
- 根据父母身高预测儿子身高
- 收益用计算机怎么计算,有利网收益计算器怎么用
- 计算机进入休眠状态如何唤醒,电脑进入睡眠状态怎么快速唤醒图文教程