2012-04-29 77 views
7

Tôi đang phân tích cú pháp nguồn cấp dữ liệu rss được cấu trúc kém và một số dữ liệu đang được trả lại có <p>at trong đó. Làm thế nào tôi có thể thay thế tất cả các trường hợp của <p>at với một không gian trống, bằng cách sử dụng java?Thay thế chuỗi ký tự trong java

Tôi đã quen thuộc với phương thức .replace cho lớp Chuỗi, nhưng tôi không chắc chắn biểu thức regex sẽ trông như thế nào. Tôi đã thử inputString.replace("<p>at", "") nhưng điều đó không hiệu quả.

+1

Hãy thể hiện một SSCCE. 'Replace()' không sử dụng regex (và do đó chỉ hoạt động). 'replaceAll()' là một trong đó sử dụng regex (do đó bạn không nên sử dụng). – BalusC

+0

Tôi có nghĩa là replaceAll(). replace() woulnd't làm việc vì nó cần một ký tự đơn để thay thế. – user1154644

+0

Chà, bạn có * vẫn * trên Java 1.4 trở lên không? Kể từ Java 1.5 (được phát hành cuối năm 2004), có hai phương thức 'replace()', một phương thức lấy 'char' và một số khác lấy' CharSequence' (và do đó cũng 'String'). Trong bất kỳ cách nào, "lỗi chính tả" này chính xác là một trong những lý do tại sao bạn nên hiển thị SSCCE. Vì vậy, chúng tôi có thể trong bản chất chỉ copy'n'paste'n'run mà không có thay đổi để xem vấn đề của bạn mình. – BalusC

Trả lời

11

Hãy thử điều này:

inputString = inputString.replace("<p>at", ""); 

Hãy nhận biết rằng phương pháp replace() không không thay đổi String tại chỗ (như là trường hợp với tất cả phương thức trong lớp String, bởi vì nó không thay đổi), thay vào đó nó trả về một String mới với các sửa đổi - và bạn cần phải lưu chuỗi trả về ở đâu đó.

Ngoài ra, phiên bản trên của replace() không nhận được biểu thức chính quy làm đối số, chỉ cần chuỗi được thay thế và thay thế nó.

+0

+1 Điểm quan trọng ở đây là các chuỗi là *** không thay đổi được ***. Nó là không thể (tốt, trừ khi bạn đi đến độ dài lớn để đánh lừa trình biên dịch) để thay đổi giá trị của một chuỗi. Tất cả các phương thức "thay đổi" một chuỗi sẽ trả về một chuỗi _new_ chứa giá trị được sửa đổi. –

+0

đó là vấn đề, cảm ơn. – user1154644

+0

@JimGarrison spot-on !. Tôi đã thêm phần thông tin đó vào câu trả lời của tôi –

1
inputString.replace("<p>at", "") // this will replace all match's with second parameter charsequence 
inputString.replaceAll("<p>at", "") // Replaces each substring of this string that matches the given regular expression with the given replacement. 

bạn có thể sử dụng bất cứ ai.

nhờ

+0

Bạn đã sai. Đọc javadoc: http://docs.oracle.com/javase/6/docs/api/java/lang/String.html – BalusC

+0

OOPS ... cảm ơn vì đã sửa tôi. @BalusC –

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