Java Método split() de cadena con ejemplo

⚡ Resumen inteligente

Dividir una cadena en Java Utilizando el método split(), que divide el texto dondequiera que coincida con un delimitador y devuelve los fragmentos como una matriz de cadenas. Un argumento opcional limite la cantidad de fragmentos que se generan, dejando el resto intacto.

  • 🧩 Tipo de retorno: La función split() devuelve String[], nunca una sola cadena, por lo que el resultado debe asignarse a un array.
  • 🔤 El delimitador es una expresión regular: El argumento es una expresión regular, por lo que caracteres como el punto y la barra vertical necesitan escapar.ping.
  • 🔢 Argumento límite: Si se supera el límite de 3, se obtienen dos fragmentos divididos y el resto del texto se conserva como elemento final.
  • Patrón de espacios en blanco: El patrón \\s coincide con cualquier carácter de espacio en blanco individual, que divide una oración en palabras.
  • 🕳️ Espacios en blanco al final: Los campos finales vacíos se descartan a menos que se proporcione un límite negativo.
  • 🔁 Resultados de la lectura: Un bucle for estándar que recorre la longitud del array imprime cada elemento en orden.

Java Método de división de cadena ()

¿En qué está la cadena split()? Java?

El split() Este método te permite romper un cadena basado en un específico Java delimitador de cadena. Generalmente, el delimitador es un espacio o una coma (,) donde se desea dividir la cadena.

sintaxis de la función split()

public String[] split(String regex)
public String[] split(String regex, int limit)

⚠️ Nota sobre el tipo de retorno: split() devuelve un String[] matriz, ni uno solo String. Asignar el resultado a un simple String La variable no se compila y produce un error de tipos incompatibles, que es el error más frecuente que cometen los principiantes con este método.

Parámetro

  • Expresión regular: la expresión regular aplicada al texto o cadena.
  • Límite: El número máximo de valores en el array resultante. Si se omite o es cero, se devuelven todas las subcadenas que coinciden con la expresión regular.

Cómo dividir una cadena en Java con delimitador

El siguiente ejemplo muestra cómo dividir una cadena en Java con un delimitador.

Supongamos que tenemos una variable de cadena llamada strMain formado por unas pocas palabras: Alfa, Beta, Gamma, Delta, Sigma — todo separado por una coma (,).

 Dividir una cadena en Java

Aquí, si queremos todas las cadenas individuales, el mejor patrón posible sería dividirlas según la coma. Entonces obtendremos cinco cadenas separadas de la siguiente manera:

  • Alpha
  • Beta
  • Gama
  • Delta
  • Sigma

Usa la cuerda split método en Java contra la cadena que necesita ser dividida, y proporcione el separador como argumento.

En esta Java dividir cadena por caso delimitador, el separador es una coma (,) y el resultado de la Java La operación de dividir cadena por coma le dará como resultado una matriz dividida.

class StrSplit{
  public static void main(String []args){
   String strMain = "Alpha, Beta, Delta, Gamma, Sigma";
    String[] arrSplit = strMain.split(", ");
    for (int i=0; i < arrSplit.length; i++)
    {
      System.out.println(arrSplit[i]);
    }
  }
}

El bucle en el código simplemente imprime cada Java Dividir la cadena del array después de la función split en Java, Como se muestra abajo.

Rendimiento esperado:

Alpha
Beta
Delta
Gamma
Sigma

Ejemplo: Java Método String split() con expresiones regulares y longitud

Considere una situación en la que solo necesita los primeros 'n' elementos después de la función split en Javapero quiero que el resto de la cadena permanezca como está. Una salida similar a esta:

  1. Alpha
  2. Beta
  3. Delta, Gama, Sigma

Esto se puede lograr pasando otro argumento junto con la operación split() en Javay ese será el límite de cadenas necesarias.

Considere el siguiente código del método split en Java:

class StrSplit2{
  public static void main(String []args){
   String strMain = "Alpha, Beta, Delta, Gamma, Sigma";
    String[] arrSplit_2 = strMain.split(", ", 3);
    for (int i=0; i < arrSplit_2.length; i++){
      System.out.println(arrSplit_2[i]);
    }
  }
}

Rendimiento esperado:

Alpha
Beta
Delta, Gamma, Sigma

Tenga en cuenta que un límite de 3 produce exactamente tres elementos: se respetan los dos primeros separadores y todo lo que está después del segundo separador se mantiene junto como el tercer elemento.

Cómo dividir una cuerda en Java por el espacio

Consideremos una situación en la que queremos dividir una cadena por espacios. Aquí tenemos una cadena dividida. Java variable llamado strMain formado por unas pocas palabras: Bienvenidos a Guru99.

public class StrSplit3{
public static void main(String args[]){
String strMain = "Welcome to Guru99";
String[] arrSplit_3 = strMain.split("\\s");
    for (int i=0; i < arrSplit_3.length; i++){
      System.out.println(arrSplit_3[i]);
    }
  }
}

Rendimiento esperado:

Welcome
to
Guru99

El patrón \\s coincide con un solo carácter de espacio en blanco. Usar \\s+ en cambio, cuando las palabras pueden estar separadas por más de un espacio, de lo contrario, cada espacio adicional produce un elemento vacío.

Cómo mantener las cadenas vacías al dividir en Java

Un comportamiento de split() sorprende a casi todos la primera vez que lo ven: hilos vacíos que quedan sueltos son desechados silenciosamente. "a,b,," La coma devuelve dos elementos, no cuatro, porque el límite predeterminado de cero descarta todos los campos vacíos al final de la matriz.

Esto es importante siempre que los datos sean posicionales; por ejemplo, una fila CSV donde un valor faltante al final aún ocupa una columna. Perder esos espacios en blanco desplaza todos los índices posteriores.

Pasando un negativas El límite los mantiene:

String row = "Alpha,Beta,,";

// Default: trailing empty fields removed -> length 2
String[] a = row.split(",");
System.out.println(a.length);        // prints 2

// Negative limit: every field preserved -> length 4
String[] b = row.split(",", -1);
System.out.println(b.length);        // prints 4

Tres reglas cubren todos los casos. Un límite de cero, que es el valor predeterminado, aplica el patrón tantas veces como sea posible y luego descarta las cadenas vacías finales. positivo El límite aplica el patrón como máximo límite menos una vez, por lo que el elemento final conserva el resto intacto, exactamente como lo demostró el ejemplo anterior con un límite de 3. negativas El límite aplica el patrón tantas veces como sea posible y conserva todos los campos vacíos, incluidos los últimos.

Las cadenas vacías iniciales se comportan de manera diferente de nuevo: división ",a,b" siempre produce un primer elemento vacío independientemente del límite, porque el patrón coincide en la posición cero. Evítelo recortando la entrada o filtrando el resultado. matriz antes de usar.

split() vs StringTokenizer vs Pattern.split(): ¿Cuál usar?

Java Ofrece tres maneras de dividir una cadena en fragmentos. Se diferencian en el tipo de delimitador que aceptan, en el resultado que devuelven y en si el patrón se compila una sola vez o se vuelve a compilar en cada llamada, lo cual es importante cuando la división se realiza dentro de un bucle.

Aspecto String.split () Tokenizador de cadenas Patrón.split()
Delimitador Expresión regular Conjunto de caracteres individuales Expresión regular
Returns Cuerda[] Tokens mediante una enumeración Cuerda[]
Patrón compilado En cada llamada No es aplicable Una vez, luego reutilizado
Conserva los campos vacíos Solo con límite negativo Nunca Solo con límite negativo
Estado Recomendado Legado, conservado por compatibilidad Recomendado en bucles

Usar String.split() para trabajos puntuales ordinarios, ya que es el más corto de escribir y se lee con claridad. Precompilar con Pattern.compile(",").split(text) al dividir dentro de un bucle, porque la expresión regular se compila una sola vez en lugar de en cada iteración. Evitar StringTokenizer en el código nuevo; se mantiene solo por compatibilidad con versiones anteriores.

Preguntas frecuentes sobre bancarrota Java Errores de split() y cómo solucionarlos

Casi todos los problemas con split() tracEsto se debe a una de dos causas: el argumento es una expresión regular en lugar de una cadena literal, o las reglas de límite descritas anteriormente descartan campos inesperadamente. Cada error a continuación indica su síntoma y su solución.

  • Dividir por un punto devuelve una matriz vacía: "1.2.3".split(".") coincide con cada carácter, porque el punto es un comodín de expresiones regulares. Escápelo como split("\\.").
  • La división en una tubería se comporta de forma extraña: La tubería significa alternancia en expresiones regulares. Escápelo como split("\\|").
  • Error de tipos incompatibles: El resultado fue asignado a un String. Declara la variable como String[].
  • Elemento inicial vacío inesperado: El delimitador aparece al inicio de la entrada. Recorte la cadena primero.
  • Valores faltantes al final: Los campos vacíos finales fueron descartados por el límite predeterminado. -1 como segundo argumento.
  • NullPointerException: split() Se llamó a la función en una referencia nula. Compruebe si es nula antes de dividir, ya que el método no puede manejarla.

Preguntas Frecuentes

Utilice una clase de personaje, como en split("[,;]"), que se interrumpe en una coma o en un punto y coma. La alternancia también funciona: split(",|;").

Sí. Envuelve el array con Arrays.asList(text.split(",")) para una vista de tamaño fijo, o new ArrayList<>(Arrays.asList(...)) cuando sea necesario modificar la lista posteriormente.

Sí. AI Las herramientas generan un patrón de funcionamiento a partir de un formato descrito y explican cada token. Pruebe el resultado con casos excepcionales, como campos vacíos y valores entre comillas, antes de confiar en él.

Los asistentes de IA identifican si la causa es un metacaracter sin escapar, un campo final descartado o un delimitador inicial, que son las tres explicaciones para una longitud de matriz inesperada.

Solo para datos simples. No puede manejar comas dentro de campos entre comillas ni saltos de línea incrustados, por lo que una biblioteca CSV dedicada es más segura para archivos reales. Leerlos línea por línea con BufferedReader Combina bien con dicha biblioteca.

Resumir este post con: