Tại sao không chỉ:
int plusIndex = s.indexOf("+");
if (plusIndex != -1) {
String before = s.substring(0, plusIndex);
// Use before
}
Nó không thực sự rõ ràng tại sao phiên bản gốc của bạn không hoạt động, nhưng sau đó bạn không nói những gì thực sự xảy ra. Nếu bạn muốn chia không sử dụng biểu thức thông thường, cá nhân tôi muốn sử dụng Guava:
Iterable<String> bits = Splitter.on('+').split(s);
String firstPart = Iterables.getFirst(bits, "");
Nếu bạn đang đi để sử dụng split
(hoặc phiên bản built-in hoặc ổi), bạn không cần phải kiểm tra xem nó có chứa +
trước tiên hay không - nếu nó không có ở đó thì sẽ chỉ có một kết quả. Rõ ràng có một câu hỏi về tính hiệu quả, nhưng nó là mã đơn giản hơn:
// Calling split unconditionally
String[] parts = s.split("\\+");
s = parts[0];
Lưu ý rằng viết String[] parts
được ưa thích hơn String parts[]
- đó là mã Java nhiều thành ngữ hơn.
Nguồn
2012-04-08 06:17:32
Vui lòng đọc http://tinyurl.com/so-hints - nó vô dụng để nói nó không cho kết quả mong đợi mà không nói những gì bạn mong đợi và những gì bạn thực sự có. –