如何为列表中的每个字符串找到字符串的最后一个字符的值>

问题描述 投票:0回答:1

我需要根据条件过滤列表[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")
scala list filter foreach
1个回答
0
投票

[确定,这是可能的解决方案:

我也将您的测试数据扩展为包含不良数据:

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)

我将字符串反转并将其更改为列表,因此模式匹配更加容易。在最后一行中,我再次重做一次。

© www.soinside.com 2019 - 2024. All rights reserved.