要从我使用的字符串列表中删除字符:
val validLines : List[String] = List("test[" , "test]")
val charsToClean: List[String] = List("\"", "[", "]", "'")
val filtered = validLines.map(line => line.replace(charsToClean(0), "")
.replace(charsToClean(1), "")
.replace(charsToClean(2), "")
.replace(charsToClean(3), ""))
我正在尝试使用内部映射函数而不是硬编码要替换的字符的位置:
val filtered1 : List[String] = validLines.map(line => charsToClean.map {c => line.replace(c , "") })
但收到编译器错误:
mismatch; found : List[List[String]] required: List[String]
应该是
line.replace(c , "")
的结果不被退回?
最佳答案
不,因为您的代码更像是:对于每个字符串和每个不需要的字符,返回替换 对于这个符号 (n^2 个字符串)。
您可能想要做的事情可以使用以下代码段来实现:
val rawLines : List[String] = List("test[" , "test]")
val blacklist: Set[Char] = Set('\"', '[', ']' ,''')
rawLines.map(line => line.filterNot(c => blacklist.contains(c)))
// res2: List[String] = List(test, test)
或者,如@ka4eli 在他的回答中所示,使用正则表达式。
关于string - 从字符串列表中删除字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31908521/