Chỉ cần sử dụng phương pháp thích hợp : String#split()
.
String string = "004-034556";
String[] parts = string.split("-");
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556
Lưu ý rằng điều này cần một biểu thức chính quy , vì vậy hãy nhớ thoát các ký tự đặc biệt nếu cần thiết.
có 12 ký tự với ý nghĩa đặc biệt: dấu gạch chéo ngược \
, dấu mũ ^
, ký hiệu đô la $
, dấu chấm hoặc dấu chấm .
, thanh dọc hoặc ký hiệu ống |
, dấu hỏi ?
, dấu hoa thị hoặc dấu sao *
, dấu cộng +
, dấu ngoặc đơn mở (
, dấu ngoặc đơn đóng)
và dấu ngoặc vuông mở [
, dấu ngoặc nhọn mở {
, Những ký tự đặc biệt này thường được gọi là "siêu ký tự".
Vì vậy, nếu bạn muốn phân tách trên ví dụ: period / dot .
có nghĩa là " bất kỳ ký tự " nào trong regex, hãy sử dụng dấu gạch chéo ngược\
để thoát ký tự đặc biệt như vậy split("\\.")
hoặc sử dụng lớp ký tự[]
để thể hiện (các) ký tự chữ như vậy split("[.]")
hoặc sử dụngPattern#quote()
để thoát khỏi toàn bộ chuỗi như vậy split(Pattern.quote("."))
.
String[] parts = string.split(Pattern.quote(".")); // Split on period.
Để kiểm tra trước nếu chuỗi chứa (các) ký tự nhất định, chỉ cần sử dụng String#contains()
.
if (string.contains("-")) {
// Split it.
} else {
throw new IllegalArgumentException("String " + string + " does not contain -");
}
Lưu ý, điều này không có một biểu thức thông thường. Cho rằng, sử dụngString#matches()
thay thế.
Nếu bạn muốn giữ lại ký tự phân tách trong các phần kết quả, thì hãy sử dụng giao diện tích cực . Trong trường hợp bạn muốn có ký tự phân tách kết thúc ở phía bên tay trái, hãy sử dụng giao diện tích cực theo ?<=
nhóm tiền tố trên mẫu.
String string = "004-034556";
String[] parts = string.split("(?<=-)");
String part1 = parts[0]; // 004-
String part2 = parts[1]; // 034556
Trong trường hợp bạn muốn có ký tự phân tách kết thúc ở phía bên tay phải, hãy sử dụng giao diện tích cực bằng cách thêm tiền tố ?=
nhóm trên mẫu.
String string = "004-034556";
String[] parts = string.split("(?=-)");
String part1 = parts[0]; // 004
String part2 = parts[1]; // -034556
Nếu bạn muốn giới hạn số phần kết quả, thì bạn có thể cung cấp số mong muốn làm đối số thứ hai của split()
phương thức.
String string = "004-034556-42";
String[] parts = string.split("-", 2);
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556-42