Cadena Scala
El siguiente ejemplo asigna una cadena a una constante:
Ejemplo
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
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
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
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
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
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 |