我们重复以下代码片段以从csv行获取数据:
val rowSplit = line.split(",",-1)
rowSplit match {
case array:Array[String] =>{
if (array.length > 23){
val (office,messageid,screenchannel,screenname) =
(array(0),array(2),array(3), array(8))
...
但它只是臭。有一个更好的方法吗?
答案 0 :(得分:1)
正确处理CSV文件并不容易。幸运的是,你可以使用一些库。我在这里使用了一个:http://super-csv.github.io/super-csv/index.html,非常好。
答案 1 :(得分:0)
首先,请注意,分隔符的简单拆分不是对常规CSV文件的正确解析,因为值可能会被引用并且可能包含逗号。
但是我们假设在您的情况下,逗号始终是分隔符,并且从不引用值。
在这种情况下,您可以使用正则表达式来解析CSV行。这是一个样本:
val LineRe = """([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),.*""".r
line match {
case LineRe(office, _, messageId, screenChannel1, _, _, _, _, screenName) => ...