Sólo tiene que utilizar 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 toma una expresión regular , así que recuerde escapar de caracteres especiales si es necesario.
Hay 12 caracteres con significados especiales: la barra diagonal inversa \, el ^símbolo de intercalación , el signo de dólar $, el punto o punto ., el símbolo de barra o tubo vertical |, 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 [, la llave de apertura {, estos caracteres especiales a menudo se denominan "metacaracteres".
Por lo tanto, si desea dividir, por ejemplo, punto / punto, .que significa " cualquier carácter " en la expresión regular, use una barra diagonal inversa\ para escapar del carácter especial individual como tal split("\\."), o use la clase de caracteres[] para representar caracteres literales como ese split("[.]"), o use 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, simplemente use String#contains().
if (string.contains("-")) {
// Split it.
} else {
throw new IllegalArgumentException("String " + string + " does not contain -");
}
Tenga en cuenta que esto no toma una expresión regular. Para eso, use String#matches()en su lugar.
Si desea conservar el carácter dividido en las partes resultantes, utilice una apariencia positiva . En caso de que desee que el carácter dividido termine en el lado izquierdo, use una mirada hacia atrás positiva al prefijar el ?<=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 búsqueda positiva al prefijar el ?=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 del split()método.
String string = "004-034556-42";
String[] parts = string.split("-", 2);
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556-42