我正在寻找一种从Scala中的字符串中剥离后缀(子串)集的惯用方法。
val inputString = "abc@xyz.com"
val suffixes = List("\"", "@xyz.com")
基本上,后缀列表是从外部加载的,因此不是静态的。因此我不能使用链接stripSuffix方法的方法
(P.S。 - 我将删除开头“使用inputString.stripPrefix(”\“”)
答案 0 :(得分:4)
您可以使用foldLeft
和.stripSuffix()
函数迭代动态后缀列表,并逐个从字符串中删除它们。
val inputString = "abc@xyz.com"
val suffixes = List("\"", "@xyz.com")
val strippedString = suffixes.foldLeft(inputString) { (string, suffix ) =>
string.stripSuffix(suffix)
}
输出:abc
使用这种方法,后缀的顺序将影响您的输出。
答案 1 :(得分:1)
不依赖于后缀列表顺序的解决方案
import scala.util.matching.Regex
val pattern = s"(${suffixes.map(s => Regex.quote(s)).mkString("|")})+$$"
inputString.replaceAll(pattern, "")
如果后缀列表很长,这可能会非常低效,因为它会将整个列表编译成一个大的正则表达式。