举个例子:
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角色
答案 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);