在任何人跳到结论,是的,我意识到需要逃生管道符号:-)分裂的Java中的管道产生不同的结果
...在我的代码,我也做所以:
String line = "C0000005|A13433185|SCUI|RB|C0036775|A7466261|SCUI||R86000559||MSHFRE|MSHFRE|||N||"
line = line.trim();
String[] columns_array = line.trim().split("\\|"); // length = 15
List<String> columns_list = Splitter.on("|").splitToList(line); // size = 17
我解析一个巨大的文件(〜5GB),每一行是竖线分隔,且上述line
是在该文件中,在我的代码与索引出界失误崩溃之首。经过调试,我意识到发生了什么,并添加番石榴Splitter
线只是一个健全的检查。使用分离器,我得到预期的列表。
为什么番石榴拆分器和原生拆分的结果不同?
旁边的问题:是您的文件CSV使用dif不定界符?可以为您节省一些使用CSV库的麻烦。 – jpmc26 2015-01-20 23:15:36
我得到15和17. – 2015-01-20 23:18:28
使用'split(“\\ |”,-1);'。 – 2015-01-20 23:18:44