嗨,我有這樣的字串:
var ma_test="~0.000000~~~"
我正在使用帶有 ~ 作為分隔符的拆分函式,但它沒有正確拆分
我的嘗試:
scala> var ma_test="~0.000000~~~"
scala> val split_val = ma_test.split("~")
split_val: Array[String] = Array("", 0.000000)
scala> val split_dis = split_val(2)
java.lang.ArrayIndexOutOfBoundsException: 2
... 32 省略
我也嘗試使用 val split_val = ma_test.split("\~") 和 ma_test.split('~') 仍然無法正確拆分
uj5u.com熱心網友回復:
使用 split 將洗掉所有尾隨的空字串,因此 split 后有 2 個元素(因為前導 ~ 也將拆分),并從索引 0、1 等開始。
請注意,您將獲得 Array 中的第一個空條目,因為開頭有一個 ~ 也將拆分,因此您應該使用索引 1。
var ma_test="~0.000000~~~"
val split_val = ma_test.split("~")
val split_dis = split_val(1)
輸出
var ma_test: String = ~0.000000~~~
val split_val: Array[String] = Array("", 0.000000)
val split_dis: String = 0.000000
您可以將 -1 作為第二個引數傳遞以查看所有部分,然后使用索引 2 將為您提供一個空字串。
var ma_test="~0.000000~~~"
val split_val = ma_test.split("~", -1)
val split_dis = split_val(2)
輸出
var ma_test: String = ~0.000000~~~
val split_val: Array[String] = Array("", 0.000000, "", "", "")
val split_dis: String = ""
uj5u.com熱心網友回復:
輸出與“特殊字符”~或x表明拆分功能不是問題的字符相同。在任何一種情況下,如果您嘗試訪問,split_val(2)您將得到一個,ArrayOutOfBoundsException因為該索引不存在于陣列中。0或者1會正常作業。
scala> var ma_test="x0.000000xxx"
var ma_test: String = x0.000000xxx
scala> ma_test.split("x")
val res1: Array[String] = Array("", 0.000000)
scala> var ma_test="~0.000000~~~"
var ma_test: String = ~0.000000~~~
scala> ma_test.split("~")
val res0: Array[String] = Array("", 0.000000)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/338799.html
上一篇:在ApacheSparkDataFrame中,如何洗掉所有非None值都相同的所有列?
下一篇:通過不匹配另一列來過濾一列
