2016-11-17 164 views
1

我正在尋找從Scala中的一個串剝離後綴(子)集的慣用方式刪除後綴(子)的一套習慣的方法。斯卡拉:從字符串

val inputString = "[email protected]" 
val suffixes = List("\"", "@xyz.com") 

基本上,後綴列表是從外部加載的,因此不是靜態的。因此,我不能使用鏈接stripSuffix方法的方法

(PS - 我會去掉「使用inputString.stripPrefix(」出發

回答

4

你可以使用foldLeft沿與.stripSuffix()功能\「」) 。遍歷您動態後綴的列表,並從你的字符串一個接一個帶他們

val inputString = "[email protected]" 
val suffixes = List("\"", "@xyz.com") 
val strippedString = suffixes.foldLeft(inputString) { (string, suffix) => 
    string.stripSuffix(suffix) 
} 

輸出:abc

用這種方法你後綴的訂單將我壓縮你的輸出。

1

不依賴後綴列表順序

import scala.util.matching.Regex 
val pattern = s"(${suffixes.map(s => Regex.quote(s)).mkString("|")})+$$" 
inputString.replaceAll(pattern, "") 

上雖然這可能是非常低效的,如果你的後綴列表很長,因爲它編譯整個列表變成一個大正則表達式的一個解決方案。