gpt4 book ai didi

java - 在 Java 中按管道拆分会产生不同的结果

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:09:22 25 4
gpt4 key购买 nike

在任何人下结论之前,是的,我知道需要转义管道符号 :-)

...在我的代码中,我这样做了:

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 是该文件中的第一行,我的代码在那里崩溃并出现索引越界错误.调试后,我意识到发生了什么,并添加了 guava Splitter 行作为完整性检查。使用拆分器,我得到了预期的列表。

为什么 guava splitter 和 native split 的结果不一样?

最佳答案

String.split() 从结果数组中移除尾随的空字符串。在要拆分的字符串末尾有两个定界符 (...||)。

这是文档的摘录:http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split%28java.lang.String%29

This method works as if by invoking the two-argument split method with the given expression and a limit argument of zero. Trailing empty strings are therefore not included in the resulting array.

关于java - 在 Java 中按管道拆分会产生不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28056931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com