我需要根据条件过滤列表[String]。列表中的每个String均以数字结尾,我需要过滤该列表,以便新列表仅包含以大于5的数字结尾的字符串。使其正常工作,但它告诉我类型不匹配。
val filteredList = lines.filter(lines.foreach(lines(_).takeRight(1).toInt) > 5)
“ lines”是我要过滤的字符串列表。
因此,如果我通过列表:
List("word 1", "word 2", "word 3", "word 6", "word 7", "word 8")
然后,预期的输出将是:
List("word 6", "word 7", "word 8")
[确定,这是可能的解决方案:
我也将您的测试数据扩展为包含不良数据:
val lines = List("word 1", "word 2", "word 3", "word 6", "word 7", "word 8", "", "bad")
过滤器算法使用模式匹配,其中有两种情况。
val filteredList =
lines.map(_.reverse.toList)
.filter{
case x::_ if Character.isDigit(x) => x.asDigit > 5
case _ => false
}.map(_.mkString.reverse)
我将字符串反转并将其更改为列表,因此模式匹配更加容易。在最后一行中,我再次重做一次。