scala split double pipe(||)如果为null则不打印最后一列

时间:2017-08-10 00:53:08

标签: scala apache-spark split

我需要编写Spark Scala代码来分割字符串。我的分隔符是双管(||)。如果最后一个字段为null,则split会给出ArrayIndexOutOfBoundsException。有人可以帮我解决这个问题。仅当最后一个字段为空时才会发生此问题。这是我的代码:

val str1 = "one||two||three||"
val splitfields1 = str1.split("\\|\\|")
println(splitfields1(2))

//output : three

val str2 = "one||||three||"
val splitfields2 = str2.split("\\|\\|")
println(splitfields2(2))
println(splitfields2(1))
// output1 : three
// output2 : Empty line

val str3 = "one||two||||"
val splitfields3 = str3.split("\\|\\|")
println(splitfields3(2))
// Error : java.lang.ArrayIndexOutOfBoundsException: 2
// I expected field number 2 will have null/empty string and wont give outofbound exception

splitfields3.foreach { println }
//Output : one
           two
//Here it is not printing empty line

如何解决这个问题。我从文件中获取输入,因此它可以在任何位置都有空字段。

1 个答案:

答案 0 :(得分:0)

请尝试

val splitfields3 = str3.split("\\|\\|",-1)