我正在使用JAVA,并且正在尝试将ASCII字符29(组分隔符)添加到字符串(字母数字)中,这是我算法的一部分。但是我无法验证输出,因为它没有被打印。
如果它是不可打印的字符,还有其他方法可以验证它是否确实被添加了。
尝试1)像打印其他任何ASCII字符一样打印2)打印其十六进制值(0x1D)
System.out.println("Test1====="+Character.toString((char)0x1D));
System.out.println("Test3====="+String.valueOf(Character.toChars(29)));
预期结果:验证其打印结果。 实际结果:无法验证。
答案 0 :(得分:2)
也许编写一个遍历字符串并将每个字符与 Character.toChars(29)?类似于:
String str = "Foo Bar" + yourCharacter29ToString;
for(int i=0;i<str.length();i++){
if(Character.toChars(29) == str.charAt(i)){
return true;
}
}
return false;
这足以作为概念证明。 (我没有检查上面的代码-请阅读为伪代码)
答案 1 :(得分:2)
要查看String
中的哪些代码点,可以使用Character.getName(codepoint)
int[] codepoints = ("Test3====="+String.valueOf(Character.toChars(29)))
.codePoints()
.toArray(); // optionally, set up for traditional for loop
for (int codepoint : codepoints) {
char[] utf16 = Character.toChars(codepoint); // always one or two code units
if (utf16.length == 2) {
System.out.println(
String.format("U+%04X \\u%04X\\u%04X %s",
codepoint, (int)utf16[0], (int)utf16[1], Character.getName(codepoint)));
} else {
System.out.println(
String.format("U+%04X \\u%04X %s",
codepoint, (int)utf16[0], Character.getName(codepoint)));
}
}
UTF-16字符编码使用一个或两个代码单元(char
)对Unicode字符集中的代码点进行编码。
(不确定ASCII字符集的存在与该项目或大多数项目是否相关。如果您有用于ASCII编码文本的字节,或者需要用于ASCII编码文本的字节,那是一个不同的问题。但是, Java将UTF-16用于文本数据类型。)