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

yas*_*ash 6 scala

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

elm*_*elm 13

考虑scala.util.Try在将字符串转换为数值时捕获可能的异常,如下所示,

Try("123".toDouble).isSuccess
Boolean = true

Try("a123".toDouble).isSuccess
Boolean = false
Run Code Online (Sandbox Code Playgroud)

至于易用性,请考虑这个隐含的,

implicit class OpsNum(val str: String) extends AnyVal {
  def isNumeric() = scala.util.Try(str.toDouble).isSuccess
}
Run Code Online (Sandbox Code Playgroud)

于是

"-123.7".isNumeric
Boolean = true

"-123e7".isNumeric
Boolean = true

"--123e7".isNumeric
Boolean = false
Run Code Online (Sandbox Code Playgroud)

  • 尝试抓住这样的检查是浪费资源,您可以直接检查字符串 (2认同)

yas*_*ash 0

我尝试过这个并且工作正常:

val s = "-1112.12" s.isNumeric && (s.contains('.')==false)