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

伦敦大型

我需要根据条件过滤List [String]。列表中的每个String均以数字结尾,我需要过滤该列表,以便新列表仅包含以大于5的数字结尾的字符串。我已采用多种方法来解决此问题,这是我能得到的最接近的方法使其正常工作,但它告诉我类型不匹配。

val filteredList = lines.filter(lines.foreach(lines(_).takeRight(1).toInt) > 5)

“行”是我要过滤的字符串列表。

因此,如果我传递了一个列表:

List("word 1", "word 2", "word 3", "word 6", "word 7", "word 8")

那么预期的输出将是:

List("word 6", "word 7", "word 8")
smes

好的,这里是一个可能的解决方案:

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

val lines = List("word 1", "word 2", "word 3", "word 6", "word 7", "word 8", "", "bad")

过滤器算法使用模式匹配,其中有2种情况。

val filteredList = 
    lines.map(_.reverse.toList)
    .filter{
      case x::_ if Character.isDigit(x) => x.asDigit > 5
      case _ => false
    }.map(_.mkString.reverse)

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

如果您完全确定自己的数据始终符合预期格式,则可以使用一种格式

lines.filter(_.last.asDigit > 5)

好的,如果数据不好,您也可以尝试将最后一个字符更改为数字。如果没有,则失败,并且您返回false。

请注意,有人认为,您不应使用异常处理来控制流程。

lines.filter(str =>
  Try(str.last.asDigit > 5).getOrElse(false)  
) 

以下是Luis MiguelMejíaSuárez的版本

lines.filter(line => 
   line.lastOption.collect { 
     case char if (char.isDigit) => 
       char.asDigit 
     }.fold(_ > 5)(ifEmpty = false)
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何向列表中的每个字符串添加一个字符串?

如何从字符串列表中的每个字符串中删除最后一个字符

如何在列表中每个字符串的末尾添加一个字符?

删除数组中每个字符串的最后一个字符(JavaScript)

如何找到一个字符串已经在PHP中的值

如何生成一个字符串中的每个字符之间的随机字符?

如何从mongodb中的字符串中获取最后一个字符?

如何从IronPyhon中的字符串中删除最后一个字符?

获取列表中每个字符串的第一个字符

如何从字符串中删除最后一个字符?

如何使用jQuery从字符串中删除最后一个字符?

Javascript:如何从div或字符串中删除最后一个字符?

如何在TSQL中匹配字符串的最后一个字符?

如何从字符串中删除最后一个字符?

如何获取外壳中字符串的最后一个字符?

如何在Golang中删除字符串的最后一个字符?

如何从字符串中删除最后一个字符?

如何从字符串变量中删除最后一个字符?

如何替换PostgreSQL中字符串的最后一个字符?

如何读取字符串中的最后一个字符

如何替换字符串中的最后一个字符,JS

如何从C中的字符串保存最后一个字符?

如何找到一个字符串的最后一个字

如何检查一个字符串变量中的每个字母?

如何删除多个字符串中的最后一个字符?

计算一个字符串在另一个字符串中每个字符的出现次数

如何检查列表中每个字符串的第一个字符是否以一组特定的字符开头?

在vim中,我想找到一个字符串,并在字符串的每个字符之间插入空格

我想让列表中的每个 url 都是一个字符串