Bạn có thể làm điều này:
String str = "123dance456";
String substr = "dance";
String before = str.substring(0, str.indexOf(substr));
String after = str.substring(str.indexOf(substr) + substr.length());
Hoặc
String str = "123dance456";
String substr = "dance";
String[] parts = str.split(substr);
String before = parts[0];
String after = parts[1];
Cũng cần lưu ý rằng câu trả lời thứ hai không hoạt động nếu chúng tôi có nhiều hơn một lần xuất hiện của chuỗi con. Cuối cùng, nếu chúng ta chỉ muốn là người đầu tiên được công nhận, nó sẽ được an toàn hơn để gọi chia tay với một giới hạn:
String[] parts = str.split(substr, 2);
mà đảm bảo rằng các mảng được trả về có ít nhất hai yếu tố. Ngoài ra, vì split
sẽ diễn giải đầu vào của nó dưới dạng cụm từ thông dụng, chúng tôi phải cảnh giác với cú pháp biểu thức chính quy không hợp lệ. Như vậy, tôi sẽ nhiều hơn là giải pháp đầu tiên, vì nó hoạt động không phụ thuộc vào thành phần của chuỗi con ban đầu.
Để thực hiện các câu trả lời đầu tiên hiệu quả hơn - vì nó là câu trả lời ưa thích của tôi - sau đó, chúng tôi sẽ cần phải nhớ vị trí của chuỗi con:
final int position = str.indexOf(substr);
if (position >= 0) {
//if the substring does occur within the string, set the values accordingly
before = str.substring(0, position);
after = str.substring(position + substr.length());
} else {
//otherwise, default to the empty string (or some other value)
before = "";
after = "";
}
Nó luôn luôn trả tiền để chú ý đến những chút trường hợp cạnh.
Nguồn
2012-01-15 17:24:43
Có thể thực hiện nhưng định dạng chính xác là gì ??? ý tôi là khiêu vũ sẽ luôn ở đó? –
@ dku.rajkumar: Đúng vậy, chuỗi con "khiêu vũ" luôn ở đó. 'split()' nên thực hiện thủ thuật. Tôi nên tưởng tượng ra một phương pháp như thế này rồi. Tôi nghĩ rằng tôi có thể phải viết một regex cho nó.Cảm ơn :) – skip
sau đó không cần regex, chỉ cần sử dụng String [] str =; string.split ("dance"); như đã đề cập câu trả lời –