如何验证scala中的数字字符?

时间:2015-08-13 08:24:33

标签: scala

我的应用程序接受这样的字符串(-110,23,-111.9543633)我需要在scala脚本中验证/检索该字符串是否为数字?

3 个答案:

答案 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)