在 Scala 中将字符串转换为整数

Suraj P 2022年6月7日
在 Scala 中将字符串转换为整数

本文将解决在 Scala 中将 String 转换为 integer

在 Scala 中使用 toInt 方法将字符串转换为整数

在 Scala 中,如果我们想将 String 转换为 Integer,我们可以使用 toInt 方法。它在 String 对象上可用。

语法:

our_String.toInt

示例代码:

object MyClass {

    def main(args: Array[String]) {

        val str = "1234"
        val number = str.toInt
        println(number)
        println(number.getClass)

    }
}

输出:

1234
int

我们使用 toInt 方法将字符串"1234"转换为整数,但是上面代码的问题是如果字符串不是纯整数,我们将得到 NumberFormatException,就像下面的例子一样输出。

示例代码:

object MyClass {

    def main(args: Array[String]) {

        val str = "scala"
        val number = str.toInt
        println(number)
        println(number.getClass)

    }
}

输出:

java.lang.NumberFormatException: For input string: "scala"
    at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)

所以我们必须使用 try-catch 块来处理这个异常。下一个代码片段是一种更类似于 Java 的方式,将字符串转换为整数并处理异常。

示例代码:

object MyClass {

    def toInt(str: String): Int =
    {
  try {
    str.toInt
  }
  catch {
    case ex: Exception => 0
  }
}

    def main(args: Array[String]) {

        val str = "scala"
        val number = toInt(str)
        println(number)

    }
}

输出:

0

如果字符串可以转换,函数 toInt 返回正确的值(例如输入是"1234");否则,如果无法转换(例如输入是 "scala"),则返回 0

让我们再举一个使用 Option[] 将字符串转换为整数的示例。

示例代码:

object MyClass {

    def toInt(str: String): Option[Int] =
    {
  try {
    Some(str.toInt)
  }
  catch {
    case ex: Exception => None
  }
}

    def main(args: Array[String]) {

        val str = "scala"
        val number = toInt(str)
        println(number)

    }
}

输出:

None

如果字符串可以转换,函数 toInt 返回 Some(Int)(例如输入是"1234");否则,如果无法将其转换为整数,则返回 None

我们还可以编写我们的 Scala toInt 方法和 TrySucessFailure

示例代码:

import scala.util.{Try, Success, Failure}

object MyClass {

def makeInt(str: String): Try[Int] = Try(str.trim.toInt)

    def main(args: Array[String]) {

        val str = "scala"
        val number = makeInt(str)
        println(number)

    }
}

输出:

Failure (java.lang.NumberFormatException: For input string: "scala")
作者: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub