我的应用程序接受这样的字符串(-110,23,-111.9543633)我需要在scala脚本中验证/检索该字符串是否为数字?
答案 0 :(得分:10)
考虑scala.util.Try
来捕捉将字符串转换为数值时可能出现的异常,如下所示,
Try("123".toDouble).isSuccess
Boolean = true
Try("a123".toDouble).isSuccess
Boolean = false
至于易用性,请考虑这个隐含的,
implicit class OpsNum(val str: String) extends AnyVal {
def isNumeric() = scala.util.Try(str.toDouble).isSuccess
}
因此
"-123.7".isNumeric
Boolean = true
"-123e7".isNumeric
Boolean = true
"--123e7".isNumeric
Boolean = false
答案 1 :(得分:0)
假设您不仅希望使用Try(x.toInt)
或Try(x.toFloat)
转换,而且实际上想要一个验证器,它需要String
并返回true
iff传递的String
可以转换为A
implicit evidence: Numeric[A]
。
然后我会说:Afaik,没有这是不可能的。特别是,因为Numeric
不是密封。也就是说,您可以创建自己的Numeric
可以使用正则表达式轻松提取像Int, Long, Float, Double
这样的原始类型。
答案 2 :(得分:0)
我试过这个并且工作正常:
val s =“ - 1112.12” s.isNumeric&& (s.contains( '')== FALSE)