【问题标题】:Variable Escape sequences in javajava中的变量转义序列
【发布时间】:2013-12-07 15:58:01
【问题描述】:

举个例子:

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 字符

【问题讨论】:

  • 没有答案?我真的很想知道如何做到这一点。

标签: java unicode unicode-escapes


【解决方案1】:

您甚至不必将整数转换为十六进制字符串。将其保留为整数并使用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 或 \
  • 您不需要 \u 或 \。所有这些事情就是将源代码转换为字符。如果你运行我的例子,你会看到它打印了 pi 字符。我将对其进行修改以添加一个 for 循环。
  • 非常感谢! 这或多或少是我需要的。唯一的问题是我对 StringBuilder 类方法不是很熟悉。 append() 是做什么的?我想我可以用 0x 作为前缀声明一个十进制格式的整数?
  • 这只是为了方便。我将添加一个没有它的示例。
  • 我是这样做的:for(i=20;i
猜你喜欢
  • 2020-11-19
  • 1970-01-01
  • 1970-01-01
  • 2018-07-18
  • 2014-06-18
  • 2018-02-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多