Wystarczy użyć odpowiedniej metody: String#split().
String string = "004-034556";
String[] parts = string.split("-");
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556
Pamiętaj, że to wyrażenie regularne , więc pamiętaj, aby w razie potrzeby unikać znaków specjalnych .
tam jest 12 znaków ze szczególnych znaczeń: odwrotny ukośnik \, daszek ^, znak dolara $, okres lub kropka ., bar lub rura pionowa symbol |, znak zapytania ?, gwiazdka lub gwiazda *, znak plus +, nawiasem otwierającym (, nawiasem zamykającym )oraz otwierający nawias kwadratowy [, otwierający nawias klamrowy. {Te znaki specjalne są często nazywane „metaznakami”.
Tak więc, jeśli chcesz podzielić na przykład okres / kropka ., która oznacza „ dowolny znak ” w regex, użyć backslash\ uciec indywidualny znak specjalny jak tak split("\\.")lub użyć klasę postaci[] reprezentować znaki liter (y) jak tak split("[.]")lub wykorzystanie Pattern#quote()do uciec tak cały łańcuch split(Pattern.quote(".")).
String[] parts = string.split(Pattern.quote(".")); // Split on period.
Aby wcześniej sprawdzić, czy ciąg zawiera określone znaki, po prostu użyj String#contains().
if (string.contains("-")) {
// Split it.
} else {
throw new IllegalArgumentException("String " + string + " does not contain -");
}
Uwaga: nie przyjmuje wyrażenia regularnego. W tym celu użyj String#matches()zamiast tego.
Jeśli chcesz zachować podzielony znak w wynikowych częściach, skorzystaj z pozytywnego wyglądu . Jeśli chcesz, aby rozdzielony znak znalazł się po lewej stronie, użyj pozytywnego wyglądu za prefiksem ?<=grupy na wzorze.
String string = "004-034556";
String[] parts = string.split("(?<=-)");
String part1 = parts[0]; // 004-
String part2 = parts[1]; // 034556
Jeśli chcesz, aby rozdzielony znak znalazł się po prawej stronie, użyj pozytywnego spojrzenia w przód, poprzedzając ?=grupę wzorem.
String string = "004-034556";
String[] parts = string.split("(?=-)");
String part1 = parts[0]; // 004
String part2 = parts[1]; // -034556
Jeśli chcesz ograniczyć liczbę wynikowych części, możesz podać żądaną liczbę jako drugi argument split()metody.
String string = "004-034556-42";
String[] parts = string.split("-", 2);
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556-42