【发布时间】:2019-06-12 14:22:38
【问题描述】:
scala> val st1 = "|||||||000001|09/01/2014|V|174500,00|22||BD |2540|LEC|1000|BEB|
01|53||AE|111 ||49|94,22|6||||||||2|2|App|80|2|||"
scala> st1.split('|').length
resXX: Int = 39
scala> val st2 = "|||||||000001|09/01/2014|V|174500,00|22||BD |2540|LEC|1000|BEB|
01|53||AE|111 ||49|94,22|6||||||||2|2|App|80|2| | |"
scala> st2.split('|').length
resXX: Int = 41
即最后一个空字段被拆分忽略。
除了用"| |"替换所有"||"之外,还有其他解决方案吗
预期的输出是Int = 41。
确实在真实文件中我可能有如下几行:
"|||||||000001|09/01/2014|V|174500,00|22||BD |2540|LEC|1000|BEB|
01|53||AE|111 ||49|94,22|6||||||||2|2|App|80|2|||150"
这是包含数字的第 42 列。 (在这种情况下,结果是Int = 42)
每一行都有相同数量的|,但根据列的内容,split('|').length 返回不同的结果! (31, 40, ...,42)。
我可以理解最后一个分隔符后面缺少列,但不能理解前面的缺少。
【问题讨论】:
-
你能更准确一点吗?期望的输出是什么?
-
你只忽略末尾的空字符串还是整个字符串?
-
@NirHedvat 我编辑了我的问题
-
也许您正在寻找
st1.count(_ == '|')?
标签: scala