2011-08-10 15 views
9

Làm cách nào để sử dụng replace(char, char) để thay thế tất cả các ký tự "b" không có gì.Cách sử dụng thay thế (char, char) để thay thế tất cả các trường hợp của ký tự b không có gì

Ví dụ:

Hambbburger to Hamurger 

EDIT: Có một hạn chế, tôi chỉ có thể sử dụng 1.4.2, có nghĩa là không có phiên bản quá tải của thay thế!

+2

Bạn không thể là 'không có gì' không phải là một char! Tại sao bạn không thể sử dụng 'replace (String, String)'? –

+0

có thể trùng lặp của [Java: xóa tất cả các lần xuất hiện của char khỏi chuỗi] (http://stackoverflow.com/questions/4576352/java-remove-all-occurances-of-char-from-string) – dogbane

+0

Hi Dogbane, đó là cho Java 5 trở lên, sẽ không có phiên bản quá tải có sẵn cho 1.4.2. –

Trả lời

15

Ngoài ra còn có một chức năng replaceAll sử dụng dây, lưu ý tuy nhiên nó evals chúng như regexes, nhưng để thay thế một đĩa đơn char sẽ làm tốt.

Dưới đây là một ví dụ:

String meal = "Hambbburger"; 

String replaced = meal.replaceAll("b",""); 

Lưu ý rằng biến replaced là cần thiết vì replaceAll không thay đổi chuỗi tại chỗ nhưng tạo ra một cái mới với sự thay thế (String là bất biến trong java).

Nếu nhân vật bạn muốn thay thế có một ý nghĩa khác nhau trong một regex (ví dụ như . char sẽ phù hợp với bất kỳ char, không phải là một dấu chấm), bạn sẽ cần phải quote tham số đầu tiên như thế này:

String meal = "Ham.bur.ger"; 

String replaced = meal.replaceAll(Pattern.quote("."),""); 
+0

Nó sẽ hoạt động tốt cho 'b', nhưng không phải cho' .' ... – MByD

+0

@Sean, tôi đã bỏ lỡ tên hàm lần đầu tiên và sau đó sửa nó :) –

+0

tại sao bạn thay đổi câu trả lời? String.replace() là tốt hơn! –

4

Chuỗi không thay đổi, vì vậy hãy đảm bảo bạn chỉ định kết quả cho chuỗi.

String str = "Hambbburger"; 
str = str.replace("b", ""); 

Bạn không cần replaceAll nếu bạn sử dụng Java 6. Xem ở đây: replace

+1

Tôi __knew__ có quá tải 'thay thế'! –

3

thử mã này ....

public class main { 
public static void main(String args[]){ 
    String g="Hambbburger.i want to eat Hambbburger. "; 
    System.out.print(g); 
    g=g.replaceAll("b", ""); 



     System.out.print("---------After Replacement-----\n"); 
     System.out.print(g); 

} 
} 

nó mang lại cho sản lượng này .......

Hambbburger.i muốn ăn Hambbburger. --------- Sau khi thay thế ----- Hamurger.i muốn ăn Hamurger.

-1

replaceAll trong chuỗi doesnot làm việc đúng cách Luôn khuyên Nó để sử dụng thay thế()

Ex: -

String s="abcdefabcdef"; 
s=s.replace("a",""); 
+0

Xin chào, chào mừng bạn đến với SO. replaceAll là tốt, không chắc chắn nơi bạn đang nhận được rằng từ - bạn có một trường hợp buggy cụ thể để bàn tay? Ngoài ra bạn không trả lời câu hỏi - OP muốn * loại bỏ * một nhân vật, trong khi không có cách nào để làm điều này với thay thế (char, char). – pete23

2
String text = "Hambbburger"; 
text = text.replace('b', '\0'); 

Các '\0' đại diện không có gì trong mã ASCII.

+0

@Tom Nó in Hamurger. – Andrew

+1

Sau đó giao diện điều khiển của bạn in nó khác với của tôi, bởi vì giao diện điều khiển của tôi hiển thị rõ ràng các ký tự '\ 0' (không thể hiển thị nó ở đây, vì SO loại bỏ chúng). Vì vậy, giải pháp này có thể phụ thuộc vào hệ thống nơi nó sẽ được chạy. Lạ thật. – Tom

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