我需要保证字符串只包含允许的符号.现在我这样做:
def isCorrect(s: String, allowedChars: String): Boolean = {
s.distinct.foreach(c => {
if (!allowedChars.contains(c))
return false
})
true
}
Run Code Online (Sandbox Code Playgroud)
不用说这看起来不太漂亮.有没有更好,更实用的方法来做到这一点?
Tra*_*own 19
对于记录,您可以通过不限制自己的字符串来使这更加通用,并通过切换参数的顺序和使用两个参数列表来更加功能(在我看来).这是我写的方式:
def isCorrect[A](allowed: Set[A])(s: Seq[A]) = s forall allowed
Run Code Online (Sandbox Code Playgroud)
现在,您可以将此方法视为一个函数,并"部分应用"它以创建更专业的函数:
val isDigits = isCorrect("0123456789".toSet) _
val isAs = isCorrect(Set('A')) _
Run Code Online (Sandbox Code Playgroud)
这允许您执行以下操作:
scala> isDigits("218903")
res1: Boolean = true
scala> isAs("218903")
res2: Boolean = false
scala> isDigits("AAAAAAA")
res3: Boolean = false
scala> isAs("AAAAAAA")
res4: Boolean = true
Run Code Online (Sandbox Code Playgroud)
或者你仍然可以使用类似的东西isCorrect("abcdr".toSet)("abracadabra").
| 归档时间: |
|
| 查看次数: |
770 次 |
| 最近记录: |