首先参考 这篇文章 https://alvinalexander.com/scala/how-cast-string-to-int-in-scala-string-int-conversion
其实我们熟练java 后 学 scala 也是也是事半功倍 ,java 的类型转换还是非常简单,我们普通的 double 转 int long 转 int float 转double 等等都是数字类型都简单,也有数字类型转 字符串,string转 int 或者float,scala 里面有 isInstanceof asInstanceOf classof ,都是非常不错的,要借助使用的,
如果 string本身就是数字字符串 这个是没有问题的,但是如果 string本身不能确定到底是否包含非数字字符串,我们就需要判断一下,不然就会有异常,或者说 如果 判断就是异常 ,就要根据捕获的异常,来做处理。
其实我们做最简单的是使用正则匹配,但是对于 hadoop大数据来说,使用正则匹配是一种效率非常低下的选择,数据30T,如果使用正则的话,集群节点总18核cpu 64G mem估计要 好几天跑完,对于希望尽快拿到结果的人来说,正则匹配 是不可以在生产大规模使用。
第一种方法排除了,我们只能使用scala 原生支持的异常处理判断,
scala 支持 try catch option some的异常判断
我们 使用 some() 来包裹 这个强制转换的结果,不管是否成功失败 ,它返回值是 一个Option容器包裹的类型,然后通过 对 Option 对象 调用 get函数就可以取出其中的值
`
scala code 1
def toInts(s: String): Option[Int] = {
try {
Some(s.toInt)
} catch {
case e: Exception =>Some(0)
}
}
scala code 1
val num:Option[Int]=toInts(numstr)
val res:Int=num.get
`
其实默认我们捕获异常 返回 None ,但是返回值需要参与后面的计算,减少复杂性,我们返回 some(0), 通过 调用 get()方法 得到值