Java中的变量转义序列

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

现在我想将\u与hexa(i)结合起来,以获得不同的Unicode字符。对于不同的i值,可以得到不同的字符。

没有答案吗?我真的很想知道这怎么做。 - user3015246
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);

我不明白,那怎么解决我的问题?我想说System.out.print("\u(VARIABLE)");我该如何将变量添加到\u或\中? - user3015246
你不需要\u或.它们所做的只是将源代码转换为字符。如果你运行我的示例,你会看到它打印出了π字符。我将修改它以添加一个for循环。 - Pace
非常感谢!这基本上就是我需要的。唯一的问题是我不太熟悉StringBuilder类的方法。append()是什么意思?我猜我可以用0x作为前缀声明一个十进制格式的整数? - user3015246
那只是为了方便而已。我会添加一个没有它的例子。 - Pace
我是这样做的: for(i=20;i<20000;i++) { f=(char)(i); System.out.println( " \u"+hexa(i) + " = "+ i+ " = "+f+"\n");} - user3015246
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接