Il suffit d' utiliser la méthode appropriée: String#split().
String string = "004-034556";
String[] parts = string.split("-");
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556
Notez que cela prend une expression régulière , pensez donc à échapper les caractères spéciaux si nécessaire.
  il y a 12 caractères avec des significations spéciales: la barre oblique inverse \, le ^signe d' insertion , le signe dollar $, la période ou le point ., la barre verticale ou le symbole de la pipe |, le point d'interrogation ?, l'astérisque ou l'étoile *, le signe plus +, la parenthèse ouvrante (, la parenthèse fermante ), et le crochet ouvrant [, l'accolade ouvrante {, Ces caractères spéciaux sont souvent appelés "métacaractères".
Donc, si vous voulez diviser par exemple période / point .qui signifie " n'importe quel caractère " dans l'expression régulière, utilisez soit une barre oblique inversée\ pour échapper au caractère spécial individuel comme tel split("\\."), soit utilisez la classe de caractères[] pour représenter des caractères littéraux comme tels split("[.]"), ou utilisez Pattern#quote()pour échapper à la chaîne entière comme ça split(Pattern.quote(".")).
String[] parts = string.split(Pattern.quote(".")); // Split on period.
Pour tester au préalable si la chaîne contient certains caractères, utilisez simplement String#contains().
if (string.contains("-")) {
    // Split it.
} else {
    throw new IllegalArgumentException("String " + string + " does not contain -");
}
Notez que cela ne prend pas d'expression régulière. Pour cela, utilisez String#matches()plutôt.
Si vous souhaitez conserver le caractère scindé dans les parties résultantes, utilisez la recherche positive . Dans le cas où vous souhaitez que le caractère divisé se retrouve dans la partie gauche, utilisez le lookbehind positif en préfixant le ?<=groupe sur le motif.
String string = "004-034556";
String[] parts = string.split("(?<=-)");
String part1 = parts[0]; // 004-
String part2 = parts[1]; // 034556
Dans le cas où vous souhaitez que le caractère divisé se retrouve dans le côté droit, utilisez l'anticipation positive en préfixant le ?=groupe sur le motif.
String string = "004-034556";
String[] parts = string.split("(?=-)");
String part1 = parts[0]; // 004
String part2 = parts[1]; // -034556
Si vous souhaitez limiter le nombre de pièces résultantes, vous pouvez fournir le nombre souhaité comme 2ème argument de la split()méthode.
String string = "004-034556-42";
String[] parts = string.split("-", 2);
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556-42