我尝试在Java中使用正则表达式来配置它的翻译器。
我有以下十六进制字符串:31353333303430353431455232335445303031
我必须转换它并找到ascii字符串,如下所示:1533040541ER23TE001
我的问题是我可以使用正则表达式将十六进制字符串转换为ascii字符串。
好吧,你可以使用正则表达式,但我会说这有点过分。
这里正则表达式的最佳用法是从字符串中删除所有可能的非十六进制字符:
String hexStr = subjectString.replaceAll("[^0-9A-Fa-f]", "");
无论如何,这里是你如何将十六进制字符串转换为纯ASCII:
使用RegEx:
StringBuilder output = new StringBuilder("");
Pattern regex = Pattern.compile("[0-9A-Fa-f]{2}");
Matcher regexMatcher = regex.matcher(hexStr);
while (regexMatcher.find()) {
output.append((char) Integer.parseInt(regexMatcher.group(), 16));
}
output.toString();
没有RegEx:
StringBuilder output = new StringBuilder("");
for (int i = 0; i < hexStr.length(); i += 2) {
String str = hexStr.substring(i, i + 2);
output.append((char) Integer.parseInt(str, 16));
}
output.toString();