Scala字符串过滤器基于拆分索引

时间:2017-01-30 17:51:41

标签: arrays string scala filter

尝试编写一个保留输入行原始结构(不分割)的函数,并根据某个索引进行过滤。

下面的示例是尝试过滤输入字符串,以便第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

我该如何解决这个问题?

2 个答案:

答案 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))