首页 > 解决方案 > 如何读取特殊字符?

问题描述

我有如下记录

A^]B^]C^]^]^]

记录字段由^]和它的一个特殊字符分隔。cat我在 linux 中执行操作时看不到这个值,但是如果-A操作符。

想知道如何^]在 Java 中以特殊字符 ( ) 作为字段分隔符读取此类记录?

我应该提什么字段分隔符来检测它?

标签: java

解决方案


^]被称为插入符号,表示字节值 29,它是不可显示的 ASCII/Unicode 控制字符。这就是为什么你通常看不到它的原因。

在 Java 中,您可以使用八进制转义或 Unicode 转义来表示这样的字符:

  • 八进制转义:\35

  • Unicode 转义:\u001D

如果您读入一行文本,以 结尾s = "A^]B^]C^]^]^]",其中^]表示特殊字节 29 字符,那么您可以通过使用拆分字符串来获取字段值s.split("\35", -1)

这是显示它的代码:

String line = "A\u001DB\u001DC\u001D\u001D\u001D";
System.out.println("line = \"" + line + '"');
System.out.println("line.length() = " + line.length());
String[] fields = line.split("\35", -1);
for (String s : fields)
    System.out.println('"' + s + '"');

输出

line = "ABC"
line.length() = 8
"A"
"B"
"C"
""
""
""

该代码使用 Unicode 转义来构建字符串,但在 中使用八进制转义split(),只是为了表明它们是相同的字符。

如您所见,字符串长度为 8 个字符,但打印时只能看到 3 个可显示的字符。

然而,拆分确实显示有 6 个字段(由 5 个分隔符分隔)。


推荐阅读