Saltar al contenido

Cómo dividir una cadena en Java

septiembre 20, 2021
apple touch icon@2

Simplemente use el método apropiado: String#split().

String string = "004-034556";
String[] parts = string.split("-");
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556

Tenga en cuenta que esto requiere expresión regular, así que recuerda escapar caracteres especiales si necesario.

allí son 12 caracteres con significados especiales: la barra invertida , el signo de intercalación ^, el signo del dólar $, el punto o punto ., el símbolo de barra vertical o tubería |, el signo de interrogación ?, el asterisco o la estrella *, el signo más +, el paréntesis de apertura (, el paréntesis de cierre ), y el corchete de apertura [, the opening curly brace {, These special characters are often called «metacharacters».

So, if you want to split on e.g. period/dot . which means «any character» in regex, use either backslash to escape the individual special character like so split("\."), or use character class [] para representar caracteres literales como tal split("[.]"), o usar Pattern#quote() para escapar de toda la cadena así split(Pattern.quote(".")).

String[] parts = string.split(Pattern.quote(".")); // Split on period.

Para probar de antemano si la cadena contiene ciertos caracteres, solo use String#contains().

if (string.contains("-")) {
    // Split it.
} else {
    throw new IllegalArgumentException("String " + string + " does not contain -");
}

Tenga en cuenta que esto no requiere una expresión regular. Para eso, usa String#matches() en lugar de.

Si desea conservar el carácter dividido en las partes resultantes, utilice mirada positiva. En caso de que desee que el carácter dividido termine en el lado izquierdo, use una búsqueda hacia atrás positiva colocando un prefijo ?<= grupo en el patrón.

String string = "004-034556";
String[] parts = string.split("(?<=-)");
String part1 = parts[0]; // 004-
String part2 = parts[1]; // 034556

En caso de que desee que el carácter dividido termine en el lado derecho, use una anticipación positiva colocando un prefijo ?= grupo en el patrón.

String string = "004-034556";
String[] parts = string.split("(?=-)");
String part1 = parts[0]; // 004
String part2 = parts[1]; // -034556

Si desea limitar el número de partes resultantes, puede proporcionar el número deseado como segundo argumento de split() método.

String string = "004-034556-42";
String[] parts = string.split("-", 2);
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556-42
close