16

这是从字符串中删除多种字符类型的可接受方法还是有更好(更有效的方法)?考虑到每个角色都会这样做,这"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"
4

2 回答 2

34

我只是使用 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

与使用chars (如过滤 a Seq[Char])相比,使用正则表达式应该是 Unicode 安全的,即使您使用的是基本多语言平面之外的代码点。“没有纯文本这样的东西。”

于 2013-01-24T07:50:09.673 回答
30

不会有显着差异,因为只有 3 个字符要删除,而且没有那么大的字符串要过滤,但您可以考虑使用 Set 来达到此目的。例如

val toRemove = "ilr".toSet
val words = sentence.filterNot(toRemove)
于 2013-01-24T07:02:30.180 回答