2011-12-14 41 views
7

Tôi có một chuỗi được định dạng bằng cá thể NumberFormat. Khi tôi hiển thị các ký tự của chuỗi i có một không gian không phá vỡ (mã hexa: A0 và unicode 160). Làm thế nào tôi có thể loại bỏ ký tự này khỏi chuỗi của tôi. Tôi đã thử string = string.replaceAll("\u0160", "");string = string.replaceAll("0xA0", ""), cả hai đều không hoạt động.Chuỗi Unicode xóa char khỏi chuỗi

String string = ((JTextField)c)getText(); 
string = string.replace("\u0160", ""); 
System.out.println("string : " string); 

for(int i = 0; i < string.length; i++) { 
System.out.print("char : " + string.charAt(i)); 
System.out.printf("Decimal value %d", (int)string.charAt(i)); 
System.out.println("Code point : " + Character.codePointAt(string, i)); 
} 

Sản lượng vẫn chứa một không gian màu trắng với giá trị thập phân 160 và mã điểm 160.

+1

Vui lòng đăng một chương trình ngắn nhưng đầy đủ để chứng minh sự cố. Cách tiếp cận đầu tiên của bạn sẽ ổn, mặc dù tôi sẽ sử dụng 'replace' thay vì' replaceAll', vì bạn thực sự không cần regex ở đây. –

Trả lời

39

Ký tự unicode \u0160 không phải là khoảng trống. Sau \ u phải có đại diện hệ thập lục phân của ký tự không phải là số thập phân, do đó, unicode cho không phá vỡ không gian là \u00A0. Hãy thử sử dụng:

string = string.replace("\u00A0",""); 
+1

Alelujah! nó hoạt động nhờ. – xtrem06

1

này đang làm việc như vậy.

public static void main(String[] args) { 
    String string = "hi\u0160bye"; 
    System.out.println(string); 
    string = string.replaceAll("\u0160", ""); 
    System.out.println(string); 
} 
4
String string = "89774lf&933 k880990"; 

string = string.replaceAll("[^\\d]", ""); 

System.out.println(string); 

OUTPUT:

89774933880990 

Nó sẽ loại bỏ tất cả các char khác hơn digits.

+0

Bạn có thể giải thích lý do tại sao nó không hoạt động khi tôi cố gắng sử dụng thay thế hoặc replaceAll? – xtrem06