2010-07-23 47 views
31

Tôi có chuỗi java với " " từ tệp văn bản mà chương trình truy cập bằng đối tượng Bộ đệm được đọc. Tôi đã thử string.replaceAll(" ","") và nó dường như không hoạt động.Cách xóa " " khỏi chuỗi java

Bất kỳ ý tưởng nào?

cleaned = cleaned.replace(" "," "); 
+5

Nó chắc chắn công trình, một trong những giả định của bạn phải là sai. Làm thế nào để bạn cuối cùng in giá trị đó? Làm thế nào để bạn kiểm tra xem nó hoạt động? –

+0

Chúng tôi có thể thấy một số phần có liên quan hơn trong mã của bạn không? – jjnguy

+3

Đó là 'string = string.replaceAll (...)', không chỉ đơn giản là 'string.replaceAll()'. Các chuỗi không thay đổi được, bạn cần gán nó trở lại một biến giống như khi bạn sử dụng 'replace()' ở trên. –

Trả lời

7

Cũng giống như cách mà bạn đề cập:

String cleaned = s.replace(" "," "); 

Nó làm việc cho tôi.

+0

"Nhiều dấu chấm than ..." ;-) –

+1

@Joachim - Tôi nghĩ bạn có nghĩa là "Nhiều dấu chấm than ???" ... HTH :-) –

+0

@Stephen: Tôi miễn cưỡng đăng toàn bộ báo giá. [Đó là một chủ đề] (http://wiki.lspace.org/wiki/Multiple_exclamation_marks) –

0

Strings là không thay đổi do đó, bạn cần phải làm

string = string.replaceAll(" ","") 
+0

Ông đã làm điều đó: 'clean = cleaned.replace ("   "," ");' – jjnguy

+0

Lấy lại -1; nếu bạn nhìn vào ví dụ 'replaceAll' được đăng trong bài đăng gốc, anh ấy không rõ ràng đã làm điều đó. –

-1

String.replace(char, char) mất char đầu vào (hoặc CharSequence đầu vào)

String.replaceAll(String, String) mất String đầu vào và các trận đấu bởi biểu thức chính quy.

Ví dụ:

String origStr = "bat"; 
String newStr = str.replace('a', 'i'); 
// Now: 
// origStr = "bat" 
// newStr = "bit"

Điểm mấu chốt là giá trị trả về chứa mới sửa String. Biến số String gốc phát ra replace()/replaceAll() không thay đổi nội dung của nó.

Ví dụ:

String origStr = "how are you?"; 
String newStr = origStr.replaceAll(" "," "); 
String anotherStr = origStr.replaceAll(" ",""); 
// origStr = "how are you?" 
// newStr = "how are you?" 
// anotherStr = howareyou?" 
+3

Lưu ý: 'Chuỗi thực hiện CharSequence'. – BalusC

+0

Liên kết cố định; họ có khoảng trống cần được thay thế bằng '% 20'. Thường xảy ra khi bạn sao chép từ trình duyệt của mình sau khi nó dọn sạch URL thành "trông đẹp" thay vì sao chép URL thô. –

+1

Tại sao không phải ai nói rõ những sai lầm rõ ràng nhất của các câu trả lời bị lỗi này dựa trên? Phương thức replaceAll() khớp với cụm từ thông dụng và thay thế() khớp với (các) ký tự bằng nhau. Câu trả lời này nên được loại bỏ, nó rất gây hiểu nhầm. – Martin

-1

String s trong Java là không thay đổi. Bạn phải làm:

String newStr = cleaned.replaceAll(" ", ""); 
+0

Nếu bạn nhận thấy, OP có giá trị replaceAll được đưa vào một biến - ghi đè giá trị ban đầu trong biến. – aperkins

+0

NO HE DONNT! ĐỌC BÀI ĐĂNG TRƯỚC KHI XUỐNG. –

73
cleaned = cleaned.replace("\u00a0","") 
0

Bạn có thể sử dụng thư viện JSoup:

String date = doc.body().getElementsByClass("Datum").html().toString().replaceAll(" ","").trim(); 
+2

Câu hỏi đang sử dụng BufferedReader chứ không phải JSoup. Thực tế là bạn chỉ cần sử dụng String để loại bỏ các khoảng trống. Nó không quan trọng làm thế nào bạn có được đối tượng String. JSoup là không cần thiết và sử dụng nó sẽ là một sự lãng phí không gian và thời gian trong trường hợp này. –

5

Đây là một quá trình hai bước:

strLineApp = strLineApp.replaceAll("&"+"nbsp;", " "); 
strLineApp = strLineApp.replaceAll(String.valueOf((char) 160), " "); 

này đã làm việc cho tôi. Mong nó cũng giúp được cho bạn!

2

Có một giải pháp sẵn sàng HTML unescape từ commons Apache:

StringEscapeUtils.unescapeHtml("") 

Bạn cũng có thể thoát khỏi HTML nếu bạn muốn:

StringEscapeUtils.escapeHtml("") 
0

tôi gặp phải cùng một vấn đề: HTML bên trong của phần tử Tôi cần có "& nbsp" và xác nhận của tôi không thành công. Kể từ khi câu hỏi đã không được chấp nhận bất kỳ câu trả lời, nhưng tôi sẽ đề nghị sau đây, mà làm việc cho tôi

String string = stringwithNbsp.replaceAll("\n", ""); 

Tái bút: Chúc mừng thử nghiệm :)

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