2011-11-21 59 views

Trả lời

18

Chuỗi không thay đổi được. Bạn phải làm điều này:

name = name.replaceAll("\\(.*\\)", ""); 

Chỉnh sửa: Ngoài ra, vì .* tham lam, nó sẽ tiêu diệt hết mức có thể. Vì vậy, "(abc)(def)" sẽ được chuyển thành "".

+0

Thank you very much. Trong ứng dụng cụ thể của tôi, tôi không lo lắng về việc làm tổ. – Daniel

+1

Thực ra, khi tôi nghĩ về nó nhiều hơn một chút, việc lồng ghép sẽ không là vấn đề bởi vì '. *' Là tham lam theo mặc định. Vấn đề thực sự là với các chuỗi như '(abc) (def)' sẽ bị xóa hoàn toàn. –

+0

Cũng không phải là một vấn đề trong tình huống của tôi. Sẽ không bao giờ có nhiều hơn một bộ ngoặc đơn. – Daniel

2

String.replaceAll() không chỉnh sửa chuỗi gốc, nhưng trả về chuỗi mới. Vì vậy, bạn cần thực hiện:

name = name.replaceAll("\\(.*\\)", ""); 
2

Nếu bạn đọc Javadoc for String.replaceAll(), bạn sẽ nhận thấy rằng nó xác định rằng chuỗi kết quả là giá trị trở.

Thông thường, String s là bất biến trong Java; họ không bao giờ thay đổi giá trị.

6

Như mentionend bởi bởi Jelvis "*" chọn tất cả mọi thứ và chuyển đổi "(ab) ok (cd)" thành ""

Các phiên bản dưới đây làm việc trong những trường hợp này "(ab) ok (cd)" -> "ok", bằng cách chọn mọi thứ ngoại trừ dấu ngoặc đơn đóng và xóa khoảng trắng.

test = test.replaceAll("\\s*\\([^\\)]*\\)\\s*", " "); 
+0

Điều này không thành công khi 'test =" (văn bản (một số văn bản khác) sau đó thêm một số nữa) "'. – Saheb

0

Tôi đang sử dụng chức năng này:

public static String remove_parenthesis(String input_string, String parenthesis_symbol){ 
    // removing parenthesis and everything inside them, works for(),[] and {} 
    if(parenthesis_symbol.contains("[]")){ 
     return input_string.replaceAll("\\s*\\[[^\\]]*\\]\\s*", " "); 
    }else if(parenthesis_symbol.contains("{}")){ 
     return input_string.replaceAll("\\s*\\{[^\\}]*\\}\\s*", " "); 
    }else{ 
     return input_string.replaceAll("\\s*\\([^\\)]*\\)\\s*", " "); 
    } 
} 

Bạn có thể gọi nó như thế này:

remove_parenthesis(g, "[]"); 
remove_parenthesis(g, "{}"); 
remove_parenthesis(g, "()"); 
Các vấn đề liên quan