Cadena Scala

El siguiente ejemplo asigna una cadena a una constante:

Ejemplo

object Test {
   val greeting: String = "Hello,World!"

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

El ejemplo anterior define la variable greeting, que es una constante de cadena, y su tipo esString (java.lang.String)。

En Scala, el tipo de cadena es en realidad Java String; Scala en sí no tiene una clase String.

En Scala, String es un objeto inmutable, por lo que no se puede modificar. Esto significa que si modificas una cadena, se creará un nuevo objeto de cadena.

Pero otros objetos, como los arreglos, son objetos mutables. A continuación presentaremos los métodos comunes de java.lang.String.


Crear cadenas

Los ejemplos de creación de cadenas son los siguientes:

val greeting = "Hello World!";

o 

val greeting:String = "Hello World!";

No es necesario especificar el tipo String para la cadena, porque el compilador de Scala inferirá automáticamente que el tipo de la cadena es String.

Por supuesto, también podemos declarar explícitamente la cadena como tipo String, como en el siguiente ejemplo:

Ejemplo

object Test {
   val greeting: String = "Hello, World!"

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

Al ejecutar el código anterior, el resultado es:

$ scalac Test.scala
$ scala Test
Hello, world!

Como mencionamos anteriormente, los objetos String son inmutables. Si necesitas crear una cadena modificable, puedes usar la clase StringBuilder, como en el siguiente ejemplo:

Ejemplo

object Test {
   def main(args: Array[String]) {
      val buf = new StringBuilder;
      buf += 'a'
      buf ++= "bcdef"
      println( "buf is : " + buf.toString );
   }
}

Al ejecutar el código anterior, el resultado es:

$ scalac Test.scala
$ scala Test
buf is : abcdef

Longitud de cadena

Podemos usar el método length() para obtener la longitud de la cadena:

Ejemplo

object Test {
   def main(args: Array[String]) {
      var palindrome = "www.example.com";
      var len = palindrome.length();
      println( "String Length is : " + len );
   }
}

Al ejecutar el código anterior, el resultado es:

$ scalac Test.scala
$ scala Test
String Length is : 14

Concatenación de cadenas

En la clase String, se usa el método concat() para concatenar dos cadenas:

string1.concat(string2);

Demostración con un ejemplo:

scala> "Ejemplo官网: ".concat("www.example.com");
res0: String = Ejemplo官网: www.example.com

También puedes usar el signo más (+) para concatenar:

scala> "Ejemplo官网: " + " www.example.com"
res1: String = Ejemplo官网:  www.example.com

Veamos un ejemplo completo:

Ejemplo

object Test {
   def main(args: Array[String]) {
      var str1 = "Sitio web oficial de Ejemplo:";
      var str2 =  "www.example.com";
      var str3 =  "El eslogan de Ejemplo es:";
      var str4 =  "¡Lo que aprendes no es solo tecnología, sino también sueños!";
      println( str1 + str2 );
      println( str3.concat(str4) );
   }
}

Al ejecutar el código anterior, el resultado es:

$ scalac Test.scala
$ scala Test
Ejemplo官网:www.example.com
Ejemplo的 Slogan 为:学的不仅是技术,更是梦想!

Crear cadenas formateadas

En la clase String puedes usar el método printf() para formatear y generar cadenas; el método format() de String puede devolver un objeto String en lugar de un objeto PrintStream. El siguiente ejemplo demuestra el uso del método printf():

Ejemplo

object Test {
   def main(args: Array[String]) {
      var floatVar = 12.456
      var intVar = 2000
      var stringVar = "¡Ejemplo!"
      var fs = printf("La variable de punto flotante es " +
                   "%f, la variable entera es %d, la cadena es " +
                   " %s", floatVar, intVar, stringVar)
      println(fs)
   }
}

Al ejecutar el código anterior, el resultado es:

$ scalac Test.scala
$ scala Test
浮点型变量为 12.456000, 整型变量为 2000, 字符串为  Ejemplo!()

Métodos de String

La siguiente tabla enumera los métodos de uso común en java.lang.String que puedes usar en Scala:

N.º Método y descripción
1

char charAt(int index)

Devuelve el carácter en la posición especificada

2

int compareTo(Object o)

Compara una cadena con un objeto

3

int compareTo(String anotherString)

Compara dos cadenas en orden lexicográfico

4

int compareToIgnoreCase(String str)

Compara dos cadenas en orden lexicográfico, sin distinguir mayúsculas y minúsculas

5

String concat(String str)

Concatena la cadena especificada al final de esta cadena

6

boolean contentEquals(StringBuffer sb)

Compara esta cadena con el StringBuffer especificado.

7

static String copyValueOf(char[] data)

Devuelve la cadena que representa la secuencia de caracteres en el array especificado

8

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

Devuelve la cadena que representa la secuencia de caracteres en el array especificado

9

boolean endsWith(String suffix)

Prueba si esta cadena termina con el sufijo especificado

10

boolean equals(Object anObject)

Compara esta cadena con el objeto especificado

11

boolean equalsIgnoreCase(String anotherString)

Compara esta cadena con otra cadena, sin distinguir mayúsculas y minúsculas

12

byte getBytes()

Codifica esta cadena en una secuencia de bytes usando el conjunto de caracteres predeterminado de la plataforma y almacena el resultado en una nueva matriz de bytes.

13

byte[] getBytes(String charsetName

Codifica esta cadena en una secuencia de bytes usando el conjunto de caracteres especificado y almacena el resultado en una nueva matriz de bytes.

14

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

Copia caracteres de esta cadena a la matriz de caracteres de destino

15

int hashCode()

Devuelve el código hash de esta cadena

16

int indexOf(int ch)

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

17

int indexOf(int ch, int fromIndex)

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

18

int indexOf(String str)

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

19

int indexOf(String str, int fromIndex)

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

20

String intern()

Devuelve la representación canónica del objeto de cadena

21

int lastIndexOf(int ch)

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

22

int lastIndexOf(int ch, int fromIndex)

Devuelve el índice de la última aparición del carácter especificado en esta cadena, realizando una búsqueda inversa desde el índice especificado

23

int lastIndexOf(String str)

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

24

int lastIndexOf(String str, int fromIndex)

Devuelve el índice de la última aparición de la subcadena especificada en esta cadena, realizando una búsqueda inversa desde el índice especificado

25

int length()

Devuelve la longitud de esta cadena

26

boolean matches(String regex)

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

27

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

Prueba si dos regiones de cadenas son iguales

28

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

Prueba si dos regiones de cadenas son iguales

29

String replace(char oldChar, char newChar)

Devuelve una nueva cadena que se obtiene reemplazando todas las apariciones de oldChar en esta cadena con newChar

30

String replaceAll(String regex, String replacement

Reemplaza todas las subcadenas de esta cadena que coinciden con la expresión regular dada usando el replacement dado

31

String replaceFirst(String regex, String replacement)

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

32

String[] split(String regex)

Divide esta cadena según las coincidencias de la expresión regular dada

33

String[] split(String regex, int limit)

Divide esta cadena de acuerdo con la expresión regular dada

34

boolean startsWith(String prefix)

Prueba si esta cadena comienza con el prefijo especificado

35

boolean startsWith(String prefix, int toffset)

Prueba si la subcadena de esta cadena que comienza en el índice especificado comienza con el prefijo especificado.

36

CharSequence subSequence(int beginIndex, int endIndex)

Devuelve una nueva secuencia de caracteres que es una subsecuencia de esta secuencia

37

String substring(int beginIndex)

Devuelve una nueva cadena que es una subcadena de esta cadena

38

String substring(int beginIndex, int endIndex)

Devuelve una nueva cadena que es una subcadena de esta cadena

39

char[] toCharArray()

Convierte esta cadena en una nueva matriz de caracteres

40

String toLowerCase()

Convierte todos los caracteres de esta cadena a minúsculas usando las reglas de la configuración regional predeterminada

41

String toLowerCase(Locale locale)

Convierte todos los caracteres de esta cadena a minúsculas usando las reglas de la Locale dada

42

String toString()

Devuelve este objeto en sí mismo (¡ya es una cadena!)

43

String toUpperCase()

Convierte todos los caracteres de esta cadena a mayúsculas usando las reglas de la configuración regional predeterminada

44

String toUpperCase(Locale locale)

Convierte todos los caracteres de esta cadena a mayúsculas usando las reglas de la Locale dada

45

String trim()

Elimina los espacios en blanco al principio y al final de la cadena especificada

46

static String valueOf(primitive data type x)

Devuelve la representación en cadena del argumento de tipo especificado

Otras extensiones