我想过滤List
,如果字符串包含.jpg
,.jpeg
或.png
,我只想保留一个字符串:
scala> var list = List[String]("a1.png","a2.amr","a3.png","a4.jpg","a5.jpeg","a6.mp4","a7.amr","a9.mov","a10.wmv")
list: List[String] = List(a1.png, a2.amr, a3.png, a4.jpg, a5.jpeg, a6.mp4, a7.amr, a9.mov, a10.wmv)
我发现.contains
不会帮助我!
必需的输出:
List("a1.png","a3.png","a4.jpg","a5.jpeg")
答案 0 :(得分:15)
使用filter
方法。
list.filter( name => name.contains(pattern1) || name.contains(pattern2) )
如果您有未定义的扩展数量:
val extensions = List("jpg", "png")
list.filter( p => extensions.exists(e => p.matches(s".*\\.$e$$")))
答案 1 :(得分:3)
为什么不使用filter()
执行选择/谓词的相应功能?
e.g。
list.filter(x => x.endsWith(".jpg") || x.endsWith(".jpeg")
等
答案 2 :(得分:3)
选择包含任意数量扩展名的任何内容:
list.filter(p => extensions.exists(e => p.contains(e)))
@SergeyLagutin上面说的是什么,但我想我已经指出它不需要matches
。