这是从字符串中删除多个字符类型的可接受方法还是有更好的(更有效的方法)? "ilr".contains(_)
位感觉有点像作弊,考虑到每个角色都会做,但话说回来,也许这是正确的方法。有更快或更有效的方法吗?
val sentence = "Twinkle twinkle little star, oh I wander what you are"
val words = sentence.filter(!"ilr".contains(_))
// Result: "Twnke twnke tte sta, oh I wande what you ae"
答案 0 :(得分:29)
我只是使用Java的旧版replaceAll
(需要正则表达式):
"Twinkle twinkle little star, oh I wander what you are" replaceAll ("[ilr]", "")
// res0: String = Twnke twnke tte sta, oh I wande what you ae
与使用char
(与过滤Seq[Char]
)相反,即使您正在使用基本多语言平面之外的代码点,使用正则表达式也应该是Unicode安全的。 "There Ain't No Such Thing As Plain Text."
答案 1 :(得分:28)
没有显着差异,因为只有3个字符要删除,没有那么大的字符串可以过滤,但您可以考虑使用Set来实现此目的。例如。
val toRemove = "ilr".toSet
val words = sentence.filterNot(toRemove)