我需要编写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
如何解决这个问题。我从文件中获取输入,因此它可以在任何位置都有空字段。
答案 0 :(得分:0)
请尝试
val splitfields3 = str3.split("\\|\\|",-1)