4

举个例子:

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

这给出了类似的东西

你好Uniπ

你好 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;
    }

现在我想用 hexa(i) 加入 \u 来为不同的 i 获取不同的 unicode 字符

4

1 回答 1

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);
于 2013-11-22T18:22:53.767 回答