首页 > 解决方案 > scala中的split命令不能正常使用特殊字符,如~

问题描述

嗨,我有这样的字符串:

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('~') 仍然无法正确拆分

标签: scalasplit

解决方案


使用 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 = ""

推荐阅读