Comparar cadenas en Scala
-
Compara cadenas usando el método
equals()
en Scala -
Compara cadenas usando el operador
==
en Scala - Igualdad en Java y Scala
En este artículo, aprenderemos cómo comparar dos cadenas en el lenguaje de programación Scala.
Dos cadenas se consideran iguales si tienen la misma secuencia de caracteres. Ahora, veamos diferentes enfoques en Scala para comparar cadenas.
Compara cadenas usando el método equals()
en Scala
En Scala, la clase String
tiene el método equals()
para comprobar la igualdad de dos cadenas.
Sintaxis:
string_one.equals(string_two)
La función devuelve true
si tanto string_one
como string_two
son iguales.
Código de ejemplo:
object MyClass {
def main(args: Array[String]) {
val one = "Tony"
val two = "Tony"
val ans = one.equals(two)
println(ans)
}
}
Producción :
true
Una cosa a tener en cuenta es que el método equals()
distingue entre mayúsculas y minúsculas, lo que significa que tony
y Tony
se tratan de manera diferente. Para superar esto, tenemos el método equalsIgnoreCase()
en la clase String
, que podemos usar.
Código de ejemplo:
object MyClass {
def main(args: Array[String]) {
val one = "Tony"
val two = "toNy"
val ans = one.equalsIgnoreCase(two)
println(ans)
}
}
Producción :
true
Nota: Debemos asegurarnos de que la cadena que llama a la función
equals()
de la claseString
(como la cadenaone
en el código anterior) no debe sernull
; de lo contrario, obtendremos unaNullPointerException
.
Compara cadenas usando el operador ==
en Scala
Podemos usar el método ==
para comparar dos cadenas en Scala.
Sintaxis:
string_one == string_two
El método ==
comprueba la igualdad de string_one
y string_two
. Devuelve true
si ambas cadenas son iguales; en caso contrario, devuelve false
.
Código de ejemplo:
object MyClass {
def main(args: Array[String]) {
val one = "tony"
val two = "tony"
if(one==two)
println(true)
else
println (false)
}
}
Producción :
true
Si sabemos que las cadenas distinguen entre mayúsculas y minúsculas, una de las principales ventajas de usar el método ==
en lugar de equals()
es que no arrojará NullPointerException
incluso si una de las cadenas es null
.
Código de ejemplo:
object MyClass {
def main(args: Array[String]) {
val one = "tony"
if(one == null)
println(true)
else
println (false)
}
}
Producción :
false
En el back-end, el método ==
primero busca valores null
, luego llama al método equals()
con el primer objeto de cadena para verificar su igualdad. Por esta razón, el método ==
no compara cadenas distinguiendo entre mayúsculas y minúsculas.
Código de ejemplo:
object MyClass {
def main(args: Array[String]) {
val one = "tony"
val two = "TONY"
if(one == two)
println(true)
else
println (false)
}
}
Producción :
false
Para superar esta situación de diferenciación entre mayúsculas y minúsculas, podemos convertir ambas cadenas a mayúsculas o minúsculas y luego compararlas.
Código de ejemplo:
object MyClass {
def main(args: Array[String]) {
val one = "tony"
val two = "TONY"
if(one.toLowerCase() == two.toLowerCase())
println(true)
else
println (false)
}
}
Producción :
true
En el código anterior, hemos convertido ambas cadenas a minúsculas usando el método toLowerCase()
, y luego usamos el método ==
para compararlas.
Igualdad en Java y Scala
Java y Scala tienen diferentes definiciones cuando se trata de igualdad. Java tiene principalmente dos formas de verificar la igualdad: una es usar el operador ==
, que verifica estrictamente la igualdad de referencia
, y otra es el método equals()
que se puede anular para verificar el contenido de la objetos.
En Scala, el método ==
se puede usar para comparar cualquier tipo, lo que significa que a==b
devolverá true
si se refieren al mismo objeto o contienen el mismo valor. Y en Scala, el método ==
es un método final
definido en cualquier clase.