尝试编写一个保留输入行原始结构(不分割)的函数,并根据某个索引进行过滤。
下面的示例是尝试过滤输入字符串,以便第4个元素(在管道上拆分后)大于2个令牌
"1||2||3||4||test or not".split("\\|\\|").filter(_.map(line => line.split("\\s")(4).length>2))
I receive the following error;
error: value split is not a member of Char
我该如何解决这个问题?
答案 0 :(得分:2)
如果你这样写,你将能够看到省略的参数是一个字符串,然后是一个字符
"this||2||is||my||test or not".split("\\|\\|").filter { someString =>
someString.map { someChar =>
someChar
}
true
}
}
filter
的长格式是someCollection.filter(element => booleanExpression)
。类似于map
。每次应用.filter
或.map
时,您都会解构集合并对元素应用操作。 "...".split("...")
的元素是字符串。 "元素"字符串是字符。
答案 1 :(得分:2)
这应该做你想要的。您可能希望为该函数找到更好的名称。
def predicate(index: Int, minSize: Int)(s: String): Boolean =
s.split("\\|\\|") match {
case e if e.length > index => e(index).split("\\s").length > minSize
case _ => false
}
lines.filter(predicate(4, 2))