2012-04-08 29 views
27

tôi muốn kiểm tra xem chuỗi của tôi chứa a + character.I thử đoạn mã saulàm thế nào để kiểm tra xem chuỗi chứa '+' nhân vật

s= "ddjdjdj+kfkfkf"; 

if(s.contains ("\\+"){ 
String parts[] = s.split("\\+); 
    s= parts[0]; // i want to strip part after + 

} 

nhưng nó doesnot cho dự kiến ​​ý tưởng result.Any?

+2

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ó. –

Trả lời

61

Bạn cần điều này thay vì:

if(s.contains("+")) 

contains() phương pháp String lớp không mất biểu hiện thường xuyên như một tham số, phải mất văn bản bình thường.


EDIT:

String s = "ddjdjdj+kfkfkf"; 

if(s.contains("+")) 
{ 
    String parts[] = s.split("\\+"); 
    System.out.print(parts[0]); 
} 

OUTPUT:

ddjdjdj 
+0

Điều đó không nhận được một phần trước khi cộng với mặc dù, đó là những gì nó âm thanh như OP thực sự muốn. –

+0

Khi tôi đăng bình luận của mình, câu trả lời của bạn * chỉ * chứa cuộc gọi đến 'String.contains'. –

+0

(Chỉ cần nhìn vào câu hỏi một lần nữa, tôi đã bỏ lỡ thực tế là ông đã được gọi có chứa. Quá sớm. Doh. Nhưng chỉ ra rằng phần còn lại của mã đã được okay sẽ có ích ...) –

9

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.

+0

Giải pháp tuyệt vời. Cảm ơn bạn rất nhiều! –

0

[+] là đơn giản

String s = "ddjdjdj+kfkfkf"; 

    if(s.contains ("+")) 
    { 
     String parts[] = s.split("[+]"); 
     s = parts[0]; // i want to strip part after + 
    } 
    System.out.println(s); 
Các vấn đề liên quan