【发布时间】:2019-01-09 19:19:26
【问题描述】:
我有这个序列users,它有很多字符串。我想要做的是根据字长过滤序列。这可以通过说filtered_users = users.filter(_.length == x) (x = wanted word length) 来完成
但是,我想在过滤列表中添加一个 char 较长和 char 较短的单词。我是手动写的
filtered_users2 = users.filter(_.length == x+1)
filtered_users3 = users.filter(_.length == x-1)
filtered_users ++= (filtered_users1 ++ filtered_users2)
我可能还需要在 seq 中添加更长/更短的 2 个字符,所以我正在寻找一种方法来遍历用户并过滤掉所有过长或过短的名称。我使用 for 循环创建了这个
var filter = Seq[String]()
for (i <- max(0, x - difference) to (x + difference)) {
filter ++= users.filter(_.length == i)
}
其中字长x 和difference 是预先给出的。但是,如果 seq 很长,我不想通过它太多次。我正在寻找的是一种只通过用户序列一次并返回过滤列表的实现。
显然,
val filtered_users = users.filter(_.length == x || _.length == x - 1 || _.length == x + 1)
没用。
【问题讨论】: