我正在使用Java從文件中收集列數據類型。有些文件是製表符分隔的,有些文件是用逗號分隔的。帶着下面的代碼:String.split() - 如何區分製表符分隔值和逗號分隔值?
String[] valuesFromColumns = null;
if (line.split("\\s*\\t\\s*") != null) {
System.out.println("Separating by tab: " + line);
valuesFromColumns = line.split("\\s*\\t\\s*");
} else if(line.split("\\s*,\\s*")!=null) {
System.out.println("Separating by comma." + line);
valuesFromColumns = line.split("\\s*,\\s*");
}
for(String s : valuesFromColumns) {
this.extractDataTypeFromTheLine(s);
}
輸出是不是出了什麼期望:它的失誤逗號分隔的製表符分隔值文件。我可能做錯了什麼? 這裏是輸出:
/Users/macbook/open_data_us/GPL94-tbl-1.txt
Separating by tab: 67023_at AI342132 Homo sapiens Mar 11, 2009 Consensus sequence GenBank Cluster Incl. AI342132:qt26c08.x1 Homo sapiens cDNA, 3' end /clone=IMAGE-1949102 /clone_end=3' /gb=AI342132 /gi=4079059 /ug=Hs.156499 /len=414 AI342132
String
String
String
...
/Users/macbook/open_data_us/Performance Metrics - Transportation.csv
Separating by tab: Alley Pot Hole,06/06/2011,Week,10,1.65,3,06/06/2011 - 06/12/2011
String
/Users/macbook/open_data_us/redditSubmissions.csv
Separating by tab: 0,1333178161,2012-03-31T14:16:01.093638-07:00,Expectation,35,rmun4,29,GifSound,6,1333203361,23,3,Gangsta_Raper
String
我真的不明白你的代碼做錯了什麼,但我發現了一個錯誤。 'split()'永遠不會返回'null'。如果'String'不包含表達式,它將返回一個位置數組並且在第一個位置使用'String':https://docs.oracle.com/javase/7/docs/api/java/lang/String .html#split(java.lang.String,%20int) –