如何在Scala中使用'mkString'函数来处理这种情况

时间:2016-05-10 06:35:18

标签: scala

例如

scala> val test = ("TEST" * 3).mkString(",")
test: String = T,E,S,T,T,E,S,T,T,E,S,T

但我想做“TEST,TEST,TEST”

所以我试过这样的。但是我得到了一个令人失望的结果

ms <- strsplit(as.character(df$member),',');
df2 <- df[rep(seq_len(nrow(df)),sapply(ms,length)),];
df2$member <- unlist(ms);
df2;
##     team_id member
## 1         1     15
## 1.1       1     25
## 1.2       1     35
## 2         2     12
## 2.1       2     22
## 2.2       2     32

3 个答案:

答案 0 :(得分:4)

这是因为你的字符串被视为chars的集合,它们被连接在一起。尝试

Array.fill(3)("TEST").mkString(",")

答案 1 :(得分:3)

mkStringIterable特征的方法。如果您将其应用于String,则会将其隐式转换为Seq[Char]

怎么样

scala> List.fill(3)("TEST").mkString(",")
res0: String = TEST,TEST,TEST

代替?

答案 2 :(得分:1)

你很亲密。如果没有init,则会有一个额外的逗号,因此init用于获取除最后一个元素之外的所有元素。

scala> (("TEST" + ",") * 3).init
res7: String = TEST,TEST,TEST