Saltar al contenido

Scala – Cuerdas

octubre 16, 2021

Este capítulo lo lleva a través de Scala Strings. En Scala, como en Java, una cadena es un objeto inmutable, es decir, un objeto que no se puede modificar. Por otro lado, los objetos que se pueden modificar, como las matrices, se denominan objetos mutables. Las cadenas son objetos muy útiles, en el resto de esta sección, presentamos métodos importantes de java.lang.String clase.

Creando una cadena

El siguiente código se puede utilizar para crear una cadena:

var greeting = "Hello world!";

or

var greeting:String = "Hello world!";

Siempre que el compilador encuentra un literal de cadena en el código, crea un objeto String con su valor, en este caso, «¡Hola mundo!». La palabra clave de cadena también se puede dar en una declaración alternativa como se muestra arriba.

Pruebe el siguiente programa de ejemplo.

Ejemplo

object Demo {
   val greeting: String = "Hello, world!"

   def main(args: Array[String]) {
      println( greeting )
   }
}

Guarde el programa anterior en Demo.scala. Los siguientes comandos se utilizan para compilar y ejecutar este programa.

Mando

>scalac Demo.scala
>scala Demo

Producción

Hello, world!

Como se mencionó anteriormente, la clase String es inmutable. El objeto de cadena una vez creado no se puede cambiar. Si es necesario realizar muchas modificaciones en las cadenas de caracteres, utilice la clase String Builder disponible en Scala !.

Longitud de la cuerda

Los métodos utilizados para obtener información sobre un objeto se conocen como métodos de acceso. Un método de acceso que se puede usar con cadenas es el método length (), que devuelve el número de caracteres contenidos en el objeto de cadena.

Utilice el siguiente segmento de código para encontrar la longitud de una cadena:

Ejemplo

object Demo {
   def main(args: Array[String]) {
      var palindrome = "Dot saw I was Tod";
      var len = palindrome.length();
      
      println( "String Length is : " + len );
   }
}

Guarde el programa anterior en Demo.scala. Los siguientes comandos se utilizan para compilar y ejecutar este programa.

Mando

>scalac Demo.scala
>scala Demo

Producción

String Length is : 17

Concatenar cadenas

La clase String incluye un método para concatenar dos cadenas:

string1.concat(string2);

Esto devuelve una nueva cadena que es cadena1 con cadena2 agregada al final. También puede usar el método concat () con cadenas literales, como en –

"My name is ".concat("Zara");

Las cadenas se concatenan más comúnmente con & plus; operador, como en –

"Hello," + " world" + "!"

Lo que da como resultado:

"Hello, world!"

Las siguientes líneas de código para encontrar la longitud de la cadena.

Ejemplo

object Demo {
   def main(args: Array[String]) {
      var str1 = "Dot saw I was ";
      var str2 =  "Tod";
      
      println("Dot " + str1 + str2);
   }
}

Guarde el programa anterior en Demo.scala. Los siguientes comandos se utilizan para compilar y ejecutar este programa.

Mando

>scalac Demo.scala
>scala Demo

Producción

Dot Dot saw I was Tod

Crear cadenas de formato

Tiene métodos printf () y format () para imprimir resultados con números formateados. La clase String tiene un método de clase equivalente, format (), que devuelve un objeto String en lugar de un objeto PrintStream.

Pruebe el siguiente programa de ejemplo, que utiliza el método printf ():

Ejemplo

object Demo {
   def main(args: Array[String]) {
      var floatVar = 12.456
      var intVar = 2000
      var stringVar = "Hello, Scala!"
      
      var fs = printf("The value of the float variable is " + "%f, while the value of the integer " + "variable is %d, and the string" + "is %s", floatVar, intVar, stringVar);
      
      println(fs)
   }
}

Guarde el programa anterior en Demo.scala. Los siguientes comandos se utilizan para compilar y ejecutar este programa.

mando

>scalac Demo.scala
>scala Demo

Producción

The value of the float variable is 12.456000, 
while the value of the integer variable is 2000, 
and the string is Hello, Scala!()

Interpolación de cadenas

La interpolación de cadenas es la nueva forma de crear cadenas en el lenguaje de programación Scala. Esta función es compatible con las versiones de Scala-2.10 y posteriores. Interpolación de cadenas: mecanismo para incrustar referencias de variables directamente en el literal de cadena de proceso.

Hay tres tipos (interpoladores) de implementaciones en String Interpolation.

El interpolador de cadenas ‘s’

El literal ‘s’ permite el uso de la variable directamente al procesar una cadena, cuando le antepone ‘s’. Cualquier variable de cadena con un alcance que se pueda usar en una cadena. Los siguientes son los diferentes usos del interpolador de cadenas ‘s’.

El siguiente fragmento de código de ejemplo para la implementación del interpolador ‘s’ al agregar la variable String ($ name) a una String normal (Hello) en la declaración println.

val name = “James”
println(s “Hello, $name”) //output: Hello, James

El interpolador de cadenas también puede procesar expresiones arbitrarias. El siguiente fragmento de código para procesar una cadena (1 + 1) con expresión arbitraria ($ {1 + 1}) mediante el interpolador de cadenas ‘s’. Cualquier expresión arbitraria se puede incrustar en ‘$ {}’.

println(s “1 + 1 = ${1 + 1}”) //output: 1 + 1 = 2

Pruebe el siguiente programa de ejemplo de implementación del interpolador ‘s’.

Ejemplo

object Demo {
   def main(args: Array[String]) {
      val name = "James"
      
      println(s"Hello, $name")
      println(s"1 + 1 = ${1 + 1}")
   }
}

Guarde el programa anterior en Demo.scala. Los siguientes comandos se utilizan para compilar y ejecutar este programa.

Mando

>scalac Demo.scala
>scala Demo

Producción

Hello, James
1 + 1 = 2

El interpolador ‘f’

El interpolador literal ‘f’ permite crear una cadena formateada, similar a printf en lenguaje C. Al usar el interpolador ‘f’, todas las referencias de variables deben ir seguidas del printf especificadores de formato de estilo como% d,% i,% f, etc.

Tomemos un ejemplo de agregar un valor de punto flotante (altura = 1.9d) y una variable de cadena (nombre = «James») con una cadena normal. El siguiente fragmento de código de implementación del interpolador ‘f’. Aquí $ nombre% s para imprimir (variable de cadena) James y $ altura% 2.2f para imprimir (valor de punto flotante) 1.90.

val height = 1.9d
val name = "James"
println(f"$name%s is $height%2.2f meters tall") //James is 1.90 meters tall

Es de tipo seguro (es decir, la referencia de la variable y el siguiente especificador de formato deben coincidir, de lo contrario, se muestra un error. El interpolador ‘f’ hace uso de las utilidades de formato String (especificadores de formato) disponibles en Java. De forma predeterminada, no hay un carácter% después de la referencia de variable. Se asumirá como% s (String).

Interpolador ‘crudo’

El interpolador ‘crudo’ es similar al interpolador ‘s’ excepto que no realiza ningún escape de literales dentro de una cadena. Los siguientes fragmentos de código en una tabla diferirán en el uso de interpoladores ‘s’ y ‘raw’. En las salidas del uso de ‘s’, los efectos n ‘como nueva línea y en la salida del uso’ sin procesar ‘, el’ n ‘no tendrá efecto. Imprimirá la cadena completa con letras de escape.

uso del interpolador ‘s’ uso del interpolador ‘crudo’

Programa

object Demo {
   def main(args: Array[String]) {
      println(s"Result = n a n b")
   }
}

Programa

object Demo {
   def main(args: Array[String]) {
      println(raw"Result = n a n b")
   }
}

Producción

Result =
a
b

Producción

Result = n a n b

Métodos de cadena

A continuación se muestra la lista de métodos definidos por java.lang.String class y se puede utilizar directamente en sus programas Scala –

No Señor Métodos con descripción
1

char charAt (índice int)

Devuelve el carácter en el índice especificado.

2

int compareTo (Objeto o)

Compara esta cadena con otro objeto.

3

int compareTo (String anotherString)

Compara dos cadenas lexicográficamente.

4

int compareToIgnoreCase (String str)

Compara dos cadenas lexicográficamente, ignorando las diferencias entre mayúsculas y minúsculas.

5

String concat (String str)

Concatena la cadena especificada al final de esta cadena.

6

boolean contentEquals (StringBuffer sb)

Devuelve verdadero si y solo si esta cadena representa la misma secuencia de caracteres que el StringBuffer especificado.

7

static String copyValueOf (char[] datos)

Devuelve una cadena que representa la secuencia de caracteres en la matriz especificada.

8

static String copyValueOf (char[] datos, int offset, int count)

Devuelve una cadena que representa la secuencia de caracteres en la matriz especificada.

9

boolean endsWith (sufijo de cadena)

Prueba si esta cadena termina con el sufijo especificado.

10

booleano es igual a (Objeto anObjeto)

Compara esta cadena con el objeto especificado.

11

boolean equalsIgnoreCase (String anotherString)

Compara esta cadena con otra cadena, ignorando las consideraciones de caso.

12

byte getBytes ()

Codifica esta cadena en una secuencia de bytes utilizando el juego de caracteres predeterminado de la plataforma, almacenando el resultado en una nueva matriz de bytes.

13

byte[] getBytes (String charsetName)

Codifica esta cadena en una secuencia de bytes utilizando el conjunto de caracteres con nombre, almacenando el resultado en una nueva matriz de bytes.

14

void getChars (int srcBegin, int srcEnd, char[] dst, int dstBegin)

Copia caracteres de esta cadena en la matriz de caracteres de destino.

15

int hashCode ()

Devuelve un código hash para esta cadena.

dieciséis

int indexOf (int ch)

Devuelve el índice dentro de esta cadena de la primera aparición del carácter especificado.

17

int indexOf (int ch, int fromIndex)

Devuelve el índice dentro de esta cadena de la primera aparición del carácter especificado, comenzando la búsqueda en el índice especificado.

18

int indexOf (String str)

Devuelve el índice dentro de esta cadena de la primera aparición de la subcadena especificada.

19

int indexOf (String str, int fromIndex)

Devuelve el índice dentro de esta cadena de la primera aparición de la subcadena especificada, comenzando en el índice especificado.

20

Pasante de cuerdas ()

Devuelve una representación canónica del objeto de cadena.

21

int lastIndexOf (int ch)

Devuelve el índice dentro de esta cadena de la última aparición del carácter especificado.

22

int lastIndexOf (int ch, int fromIndex)

Devuelve el índice dentro de esta cadena de la última aparición del carácter especificado, buscando hacia atrás comenzando en el índice especificado.

23

int lastIndexOf (String str)

Devuelve el índice dentro de esta cadena de la aparición más a la derecha de la subcadena especificada.

24

int lastIndexOf (String str, int fromIndex)

Devuelve el índice dentro de esta cadena de la última aparición de la subcadena especificada, buscando hacia atrás comenzando en el índice especificado.

25

longitud int ()

Devuelve la longitud de esta cadena.

26

coincidencias booleanas (String regex)

Indica si esta cadena coincide o no con la expresión regular dada.

27

boolean regionMatches (boolean ignoreCase, int toffset, String other, int offset, int len)

Comprueba si dos regiones de cuerdas son iguales.

28

boolean regionMatches (int toffset, String other, int offset, int len)

Comprueba si dos regiones de cuerdas son iguales.

29

Reemplazo de cadena (char oldChar, char newChar)

Devuelve una nueva cadena resultante de reemplazar todas las apariciones de oldChar en esta cadena por newChar.

30

String replaceAll (String regex, String reemplazo

Reemplaza cada subcadena de esta cadena que coincide con la expresión regular dada con el reemplazo dado.

31

String replaceFirst (String regex, String reemplazo)

Reemplaza la primera subcadena de esta cadena que coincide con la expresión regular dada con el reemplazo dado.

32

Cuerda[] dividir (cadena de expresiones regulares)

Divide esta cadena alrededor de las coincidencias de la expresión regular dada.

33

Cuerda[] split (String regex, int limit)

Divide esta cadena alrededor de las coincidencias de la expresión regular dada.

34

booleano …

close