Strings en Java String es una clase, no un tipo primitivo. Las variables de tipo String, en cualquier instante, pueden contener:
Manejo básico de cadenas de caracteres y archivos de texto en Java
Un String (ej. “Hola”, “11/11/2011”, “123”, “”, etc. ) El valor null (cuando la variable no contiene un String).
Prof. Franco Guidi Polanco, Ph.D.
Observaciones:
Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile
[email protected]
Cuando se instancia un arreglo de String, sus posiciones se incializan automáticamente en null. El valor null puede ser asignado a cualquier variable String. Franco Guidi Polanco
Valor null
28-11-11
Método equals
Para saber si una variable de tipo String contiene el valor null:
Para saber si una variable de tipo String (no null) contiene un determinado texto, debemos usar el método equals sobre la variable:
String x;
String x;
//Aquí x puede o no recibir un valor ...
//Aquí x recibe un valor ...
if( x == null ) System.out.println(“No contiene String”); else System.out.println(“Sí contiene String”);
if( x.equals(“Esternocleidomastoideo”) ) System.out.println(“Igual”); else System.out.println(“Distinto”);
Franco Guidi Polanco
2
28-11-11
3
Franco Guidi Polanco
28-11-11
4
Método equals
Método equals
Para establecer si dos variables String (no null) contienen el mismo valor:
Para establecer si dos variables String (no null) contienen valores distintos, se niega el resultado del método equals:
String x, y;
String x, y;
//Aquí x e y reciben valores ...
//Aquí x e y reciben valores ...
if( x.equals( y ) ) System.out.println(“Igual”); else System.out.println(“Distinto”);
if( ! x.equals( y ) ) System.out.println(“Distintos”); else System.out.println(“Iguales”);
Franco Guidi Polanco
28-11-11
5
String x, y;
String x = “Esternocleidomastoideo”; String y = “EsternocleidoMastoideo”;
Franco Guidi Polanco
28-11-11
6
Para aplicar cualquiera de los métodos anteriores sobre una variable, es necesario que ésta no sea null. Para verificar esta condición:
El método equals distingue entre mayúsculas y minúsculas. Si no deseamos hacer distinción entre mayúsculas y minúsculas debemos utilizar el método equalsIgnoreCase.
if( x.equalsIgnoreCase( y ) ) System.out.println(“Iguales”); else System.out.println(“Distintas”);
28-11-11
Métodos no deben ser invocados sobre variables que contengan null.
Método equalsIgnoreCase
if( x.equals( y ) ) System.out.println(“Iguales”); else System.out.println(“Distintas”);
Franco Guidi Polanco
//Aquí x e y ...
pueden o no recibir un valor
if( x != null ) if( x.equals( y ) ) System.out.println(“Igual”); ... // o en forma alternativa (en este orden): if( x != null && x.equals( y ) ) System.out.println(“Igual”);
Distintas Iguales 7
Franco Guidi Polanco
28-11-11
NOTA: No es problema que variable y sea null.
8
Métodos útiles de la clase String
Métodos útiles de la clase String
public String substring(int beginIndex, int endIndex): retorna una porción de un String, delimitada por subíndices de posición de sus caracteres. Ejemplo:
public String trim(): retorna un String con el mismo contenido, pero con el espacio inicial y final eliminado.
String queja = “ odio el espacio que me rodea System.out.println( “(” + queja + “)” );
String nombre = “Nogatongamegalosomanjarchafafrinilofo”; String parte= nombre.substring( 2, 5 ); System.out.println( parte );
(
gato
28-11-11
)
String solución = queja.trim(); System.out.println( “(” + solución + “)” );
Nota: el primer caracter ocupa la posición 0.
Franco Guidi Polanco
odio el espacio que me rodea
” ;
(odio el espacio que me rodea) 9
Métodos útiles de la clase String
Franco Guidi Polanco
28-11-11
10
Métodos útiles de la clase String
public String replaceAll(String regex, String reemplazo): retorna un String que reemplaza las porciones que coinciden con regex, por el String de reemplazo.
public String[] split(String regex): retorna un arreglo de Strings que contiene en cada posición una porción del String original, considerando como divisor a regex.
String dato = “LA CASA DEL CASADO” ; String otroDato = dato.replaceAll( “AS”, “OL” ); System.out.println( otroDato );
String familia = “Juan;Ana;Camila” ; String[] personas = familia.split(“;”); System.out.println( personas[0] ); System.out.println( personas[2] );
LA COLA DEL COLADO
Juan Camila
Franco Guidi Polanco
28-11-11
11
Franco Guidi Polanco
28-11-11
12
Secuencias de escape
Ejemplos de secuencias de escape
El backslash (“\”) se utiliza dentro de de String literales para iniciar secuencias de escape.
System.out.println(“Hola\nqué\ntal”);
Hola qué tal
Secuencias de escape importantes:
System.out.println(“Esto es \”realmente\” útil”);
“\n”: cambio de línea “\t”: tabulación “\’” : comilla simple “\””: comilla dobe “\\”: backslash
Esto es “realmente” útil
System.out.println(“Carpeta: c:\\tareas\\progamación”);
Carpeta: c:\tareas\programación Franco Guidi Polanco
28-11-11
13
Archivos de texto
Franco Guidi Polanco
28-11-11
14
Archivos de texto v/s archivos con formato
Documentos en disco que contienen caracteres. Útiles para ingreso masivo de datos, guardar resultados o mantener datos simples en forma persistente. Operaciones que estudiaremos: Consultar si un archivo existe Leer un archivo existente Crear un archivo nuevo
Las clases involucradas se encuentran dentro del package java.io y generan excepciones del tipo IOException. Franco Guidi Polanco
28-11-11
Archivo de texto (plano) 15
Franco Guidi Polanco
28-11-11
Archivo con formato 16
Para consultar la existencia de un archivo
Lectura de datos de una archivo de texto
Por ejemplo, para saber si existe el archivo: c:\documentos\datos.txt
Lectura de un archivo línea a línea (por ejemplo, del archivo llamado “datos.txt” ) :
File archivo = new File( “c:\\documentos\\datos.txt” ); if ( archivo.exists() ) System.out.println(“El archivo existe”); else System.out.println(“El archivo no existe”);
Nota: El “\” debe escribirse doble (“\\”) dentro de las cadenas de texto literales.
Franco Guidi Polanco
28-11-11
17
Escritura de datos de una archivo de texto Para generar un nuevo archivo (por ejemplo, “datos.txt” ): BufferedWriter out = new BufferedWriter(new FileWriter( “datos.txt” )); out.write( “Esto ” ); out.write( “es ” ); out.write( “la primera línea” ); out.newLine();
//Hace un cambio de línea
out.write( “Y esto ” ); out.write( “es la segunda línea” ); out.close();
Franco Guidi Polanco
Esto es la primera línea Y esto es la segunda línea 28-11-11
19
BufferedReader in = new BufferedReader( new FileReader(“datos.txt”)); String linea; while ((linea = in.readLine()) != null) { System.out.println(linea); } in.close();
Si el archivo no existe o hay otro problema durante la lectura, se generará una IOException. Franco Guidi Polanco
28-11-11
18