从字符串中删除多个字符类型

时间:2013-01-24 06:59:32

标签: scala

这是从字符串中删除多个字符类型的可接受方法还是有更好的(更有效的方法)? "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"

2 个答案:

答案 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)