我正在寻找从Scala中的一个串剥离后缀(子)集的惯用方式删除后缀(子)的一套习惯的方法。斯卡拉:从字符串
val inputString = "[email protected]"
val suffixes = List("\"", "@xyz.com")
基本上,后缀列表是从外部加载的,因此不是静态的。因此,我不能使用链接stripSuffix方法的方法
(PS - 我会去掉“使用inputString.stripPrefix(”出发
我正在寻找从Scala中的一个串剥离后缀(子)集的惯用方式删除后缀(子)的一套习惯的方法。斯卡拉:从字符串
val inputString = "[email protected]"
val suffixes = List("\"", "@xyz.com")
基本上,后缀列表是从外部加载的,因此不是静态的。因此,我不能使用链接stripSuffix方法的方法
(PS - 我会去掉“使用inputString.stripPrefix(”出发
你可以使用foldLeft
沿与.stripSuffix()
功能\“”) 。遍历您动态后缀的列表,并从你的字符串一个接一个带他们
val inputString = "[email protected]"
val suffixes = List("\"", "@xyz.com")
val strippedString = suffixes.foldLeft(inputString) { (string, suffix) =>
string.stripSuffix(suffix)
}
输出:abc
用这种方法你后缀的订单将我压缩你的输出。
不依赖后缀列表顺序
import scala.util.matching.Regex
val pattern = s"(${suffixes.map(s => Regex.quote(s)).mkString("|")})+$$"
inputString.replaceAll(pattern, "")
上虽然这可能是非常低效的,如果你的后缀列表很长,因为它编译整个列表变成一个大正则表达式的一个解决方案。