在java中将特殊字符转换为十进制等值

时间:2017-04-17 15:28:07

标签: java

是否有一个java库可以将特殊字符转换为十进制等效字符?

例如: 输入:“©™®” 输出:“©™®”(仅用于问题目的的空格,如果没有空格十进制等效的类型转换为特殊字符)

谢谢!

2 个答案:

答案 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