java中的变量转义序列

时间:2013-11-22 17:06:17

标签: java unicode unicode-escapes

举个例子:

System.out.println("Hello  Uni\u03C0");
System.out.println("Hello Esc \\");

这就像

你好Uniπ

Hello Esc \

有没有办法可以在循环中的不同迭代期间为03C0和\赋予不同的值?

例如,

之类的东西
System.out.format("Hello Esc \%c",'\\');
System.out.format("Hello Esc \%c",'\"');

我知道这会给编译错误。我想知道如何做到这一点。

例如,我想在循环的每次迭代中打印一个不同的unicode字符(例如从\ u0000到\ u00C3)。

例如,我有这个函数返回一个整数的4位十六进制值:

public static String hexa(int a)
    {
    int x=a;
    String b= String.format("%x",x);
    if(b.length() == 1)
    {
    b="000"+b;
    }
    if(b.length() == 2)
    {
    b="00"+b;
    }
     if(b.length() == 3)
    {
    b="0"+b;
    }
    return b;
    }

现在我想加入\ u和hexa(i)为不同的i获得不同的unicode角色

1 个答案:

答案 0 :(得分:3)

您甚至不必将整数转换为十六进制字符串。将其保留为整数并使用Character.toChars()

    StringBuilder sb = new StringBuilder();
    sb.append(Character.toChars(0x03C0));
    System.out.println(sb.toString());

显示for循环的进一步示例:

public static void main(String [] args) {
    String lineSeparator = System.lineSeparator();
    StringBuilder sb = new StringBuilder();

    for(int i = 0x03C0; i < 0x03D0; i++) {
        sb.append(Character.toChars(i)).append(lineSeparator);
    }

    System.out.println(sb.toString());
}

输出:

π
ρ
ς
σ
τ
υ
φ
χ
ψ
ω
ϊ
ϋ
ό
ύ
ώ
Ϗ

最后一个澄清:

System.out.println(Character.toChars(0x03C0)[0] == '\u03C0');

输出:

true

没有StringBuilder的示例:

String foo = "";
for(char c : Character.toChars(0x03C0)) {
    foo += c;
}
System.out.println(foo);