是否有一个java库可以将特殊字符转换为十进制等效字符?
例如: 输入:“©™®” 输出:“©™®”(仅用于问题目的的空格,如果没有空格十进制等效的类型转换为特殊字符)
谢谢!
答案 0 :(得分:3)
这可以通过String.format()
简单地实现。表示只是十进制的字符值,填充为4个字符并包含在&#;
唯一棘手的部分是决定哪些字符是"特殊"。在这里,我假设不是数字,不是空格而不是alpha ...
StringBuilder output = new StringBuilder();
String input = "Foo bar ©™® baz";
for (char each : input.toCharArray()) {
if (Character.isAlphabetic(each) || Character.isDigit(each) || Character.isWhitespace(each)) {
output.append(each);
} else {
output.append(String.format("&#%04d;", (int) each));
}
}
System.out.println(output.toString());
答案 1 :(得分:2)
您只需要获取How do I get the decimal value of a unicode character in Java?中提到的字符的整数值。
根据Oracle Java doc
char:char数据类型是一个16位Unicode字符。它有 最小值为' \ u0000' (或0)和' \ uffff'的最大值(要么 65,535(含))。
假设你的角色属于角色范围,你可以从你的字符串中得到每个角色的十进制等值。
String text = "©™®";
char[] cArr = text.toCharArray();
for (char c : cArr)
{
int value = c; // get the decimal equivalent of the character
String result = "& #" + value; // append to some format string
System.out.println(result);
}
输出:
& #169
& #8482
& #174