Basta usar o método apropriado: String#split().
String string = "004-034556";
String[] parts = string.split("-");
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556
Observe que isso exige uma expressão regular ; lembre-se de escapar de caracteres especiais, se necessário.
existem 12 caracteres com significados especiais: a barra invertida \, o ^sinal de intercalação , o sinal de dólar $, o ponto ou o ponto ., o símbolo vertical da barra ou tubo |, o ponto de interrogação ?, o asterisco ou estrela *, o sinal de mais +, o parêntese de abertura (, o parêntese de fechamento ), e o colchete de abertura [, o colchete de abertura {. Esses caracteres especiais geralmente são chamados de "metacaracteres".
Portanto, se você deseja dividir, por exemplo, ponto / ponto .que significa " qualquer caractere " na expressão regular, use a barra invertida\ para escapar do caractere especial individual como tal split("\\.")ou use a classe de caractere[] para representar o (s) caractere (s) literal (s) dessa forma split("[.]")ou use Pattern#quote()para escapar da corda inteira assim split(Pattern.quote(".")).
String[] parts = string.split(Pattern.quote(".")); // Split on period.
Para testar antecipadamente se a string contém certos caracteres, use String#contains().
if (string.contains("-")) {
// Split it.
} else {
throw new IllegalArgumentException("String " + string + " does not contain -");
}
Observe que isso não requer uma expressão regular. Para isso, use em String#matches()vez disso.
Se você deseja manter o caractere dividido nas partes resultantes, use uma pesquisa positiva . Caso você queira que o caractere de divisão termine no lado esquerdo, use um look positivo por trás, prefixando o ?<=grupo no padrão.
String string = "004-034556";
String[] parts = string.split("(?<=-)");
String part1 = parts[0]; // 004-
String part2 = parts[1]; // 034556
Caso você deseje que o caractere dividido termine no lado direito, use um visual positivo, prefixando o ?=grupo no padrão.
String string = "004-034556";
String[] parts = string.split("(?=-)");
String part1 = parts[0]; // 004
String part2 = parts[1]; // -034556
Se você deseja limitar o número de partes resultantes, pode fornecer o número desejado como o segundo argumento do split()método.
String string = "004-034556-42";
String[] parts = string.split("-", 2);
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556-42