2013-06-19 42 views
7

Tôi có một tập lệnh PHP <?=str_replace(array('(',')','-',' ','.'), "", $rs["hq_tel"])?> đây là một chuỗi thay thế chức năng lấy mảng ký tự và thay thế chúng nếu tìm thấy bất kỳ của char trong chuỗi. Có bất kỳ tương đương java nào của hàm không. Tôi tìm thấy một số cách nhưng một số đang sử dụng vòng lặp và một số lặp lại các báo cáo nhưng không tìm thấy bất kỳ giải pháp dòng duy nhất như thế này trong java.Thay thế nhiều char từ một chuỗi trong java

Xin cảm ơn trước.

+0

Tôi tin rằng một dòng duy nhất để làm điều này được hỗ trợ ra khỏi hộp trong Java. Tuy nhiên bạn được tự do viết một hàm thực hiện điều này. Sau đó, bạn có thể sử dụng một cách tương tự để gọi nó. Cảm ơn bạn. – midhunhk

+0

Sử dụng 'replaceAll' trên lớp' String' cho một regex phù hợp sẽ khớp với bất kỳ ký tự nào bạn muốn thay thế. – cmbaxter

Trả lời

13

Bạn có thể sử dụng một regex như thế này:

//char1, char2 will be replaced by the replacement String. You can add more characters if you want! 
String.replaceAll("[char1char2]", "replacement"); 

nơi tham số đầu tiên là regex và tham số thứ hai là replacement.

Tham khảo docs về cách thoát khỏi các ký tự đặc biệt (trong trường hợp bạn cần!).

+0

Đây sẽ là danh sách được phân tách bằng dấu phẩy (,)? – NoNaMe

+0

@zzzz Hãy thử và bạn sẽ biết. – Maroun

2

String.replaceAll(String regex, String replacement)

11

giải pháp của bạn là ở đây ..

Thay thế tất cả ký tự đặc biệt

str.replaceAll("[^\\dA-Za-z ]", ""); 

Thay cụ thể nhân vật đặc biệt

str.replaceAll("[()?:!.,;{}]+", " "); 
1

Nếu bạn không biết về regex bạn có thể sử dụng một cái gì đó chi tiết hơn:

private static ArrayList<Character> special = new ArrayList<Character>(Arrays.asList('(', ')', '-', ' ', '.')); 

public static void main(String[] args) { 
    String test = "Hello(how-are.you ?"; 
    String outputText = ""; 

    for (int i = 0; i < test.length(); i++) { 
     Character c = new Character(test.charAt(i)); 
     if (!special.contains(c)) 
      outputText += c; 
     else 
      outputText += ""; 
    } 

    System.out.println(outputText); 
} 

Output: Hellohowareyou?

EDIT (không có vòng lặp nhưng với regex):

public static void main(String[] args) { 
    String test = "Hello(how-are.you ?)"; 
    String outputText = test.replaceAll("[()-. ]+", ""); 

    System.out.println(outputText); 
} 
+0

nhưng tôi không muốn sử dụng một vòng lặp thân yêu. – NoNaMe

+0

@zzzz. Xin lỗi, tôi không đọc tùy chọn no loop !. Được thay thế để chỉ thay thế ** các ký tự bạn đã có trong mảng của mình bằng cách sử dụng regex như phần còn lại của fellas nhận xét. – maqjav

Các vấn đề liên quan