Прежде чем кто переходит к выводам, да, я знаю, о необходимости избежать символ трубы :-)Расщепление по трубе в 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
Я разбор огромного файла (~ 5 Гб), где каждая строка является трубой с разделителями, и выше line
является первым в этом файл, где мой код разбивает с индексом из ошибок границ. После отладки я понял, что происходит, и добавил линию guava Splitter
точно так же, как проверку работоспособности. Используя splitter, я получаю ожидаемый список.
Почему результаты разветвления гуавы и родной раскол разные?
Боковой вопрос: это ваш файл CSV us с другим разделителем? Возможно, вам будет сложно использовать библиотеку CSV. – jpmc26
Я получаю 15 и 17. –
Используйте 'split (" \\ | ", -1);'. –