Convertir cadena a entero en Scala
Este artículo abordará la conversión de un String
a un integer
en Scala.
Utilice el método toInt
para convertir cadenas en enteros en Scala
En Scala, si queremos convertir un String en un Entero, podemos usar el método toInt
. Está disponible en objetos String
.
Sintaxis:
our_String.toInt
Código de ejemplo:
object MyClass {
def main(args: Array[String]) {
val str = "1234"
val number = str.toInt
println(number)
println(number.getClass)
}
}
Producción :
1234
int
Usamos el método toInt
para convertir la cadena "1234"
en un número entero, pero el problema con el código anterior es que si la cadena no es un número entero puro, obtendremos NumberFormatException
como en el siguiente ejemplo producción.
Código de ejemplo:
object MyClass {
def main(args: Array[String]) {
val str = "scala"
val number = str.toInt
println(number)
println(number.getClass)
}
}
Producción :
java.lang.NumberFormatException: For input string: "scala"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
Así que tenemos que manejar esta excepción usando un bloque try-catch
. El siguiente fragmento de código es una forma más parecida a la de Java de convertir una cadena en un número entero y manejar la excepción.
Código de ejemplo:
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)
}
}
Producción :
0
La función toInt
devuelve el valor correcto si la cadena se puede convertir (como si la entrada fuera "1234"
); de lo contrario, devuelve 0
si no es posible convertir (como si la entrada es "scala"
).
Veamos otro ejemplo de convertir una cadena en un número entero usando Option[]
.
Código de ejemplo:
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)
}
}
Producción :
None
La función toInt
devuelve Some(Int)
si la cadena se puede convertir (como si la entrada fuera "1234"
); de lo contrario, devuelve None
si no es posible convertirlo a un número entero.
También podemos escribir nuestro método Scala toInt
y Try
, Sucess
y Failure
.
Código de ejemplo:
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)
}
}
Producción :
Failure (java.lang.NumberFormatException: For input string: "scala")