我正在尋找從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, "")
上雖然這可能是非常低效的,如果你的後綴列表很長,因爲它編譯整個列表變成一個大正則表達式的一個解決方案。