Java:如何通过具有替代对并打印的字符串中的字符循环



我试图以此循环浏览字符串中的字符并打印它们。除了Deseret Long I(𐐨)之外,所有这些都可以很好地打印。我不知道是否还有其他方法可以做到正确打印。这是我的代码:

package javaapplication13;
public class JavaApplication13 {
    public static void main(String[] args) {
        String s = "h𤍡y𐐀u0500";
        System.out.println(s);
        final int length = s.length();
        for (int offset = 0; offset < length;) {
            final int codepoint = s.codePointAt(offset);
            System.out.println((char) (codepoint));
            offset += Character.charCount(codepoint);
        }
    }
}

输出看起来像这样(NetBeans):

run:
h𤍡y𐐀Ԁ
h
䍡
y
Ѐ
Ԁ
BUILD SUCCESSFUL (total time: 0 seconds)

您的问题是由于您尝试将int转换为char(4个字节为2个字节)引起的。在替代对的情况下,codepoint变量中的值不能适合一个char。看,它称为 Pair ,因为它是一对char。我认为使用String.Substring()方法的最简单方式是打印的方式。或者,您可以这样将其转换为char的数组:char[] ch = Character.toChars(codepoint);,您可以通过简单的new String(ch)转换为字符串。

有一种更简单的方法:

String s = "h𤍡y𐐀u0500";
System.out.println(s);
s.codePoints().forEach(i -> System.out.printf("%c", i));
// or:
//s.codePoints().forEach(i -> System.out.print(Character.toChars(i)));

最新更新