我正在逐行阅读制表符分隔的文本文件,这非常混乱,并试图从中获取唯一的列名称。

问题在于它包含制表符作为字段分隔符,但是某些列名称的名称中有空格!我在用

String[] cols = line.split("\\t");


这似乎无法正常工作,因为在某些情况下它将空格作为分隔符!使用正则表达式是一个好的解决方案吗?如果是,您能建议什么正则表达式从字符串中删除空格但保留制表符吗?

数据就像:

Sever ID    Name
12221       zxsz

最佳答案

字符串文字中的制表符只是“ \ t”。 “ \\ t”是文字反斜杠,后跟“ t”。话虽如此,这两种方法都对我有效:

public class Scratch2 {
    public static void main(String[] args) {
        String welk = "anna one\tanna two\tanna three";
        System.out.println("\\t");
        String[] annas = welk.split("\t");
        for (String anna : annas) {
            System.out.println(anna);
        }
        System.out.println("\\\\t");
        annas = welk.split("\\t");
        for (String anna : annas) {
            System.out.println(anna);
        }
    }
}


输出:

\t
anna one
anna two
anna three
\\t
anna one
anna two
anna three


最简单的解释是您的输入字符串不包含您认为它们包含的空格字符。

09-26 05:56