2011-11-25 49 views
1

我想知道這種行爲。在我的應用程序中,我從服務器或我自己創建的數據庫獲取數據。 (我克隆服務器數據庫)String .replaceAll()在從Sqlite數據庫獲取數據時出現意外的行爲

.replaceAll ("\r\n" , "<br/>") ; 

當數據來自它替換的服務器時。但是,當數據從sqlite數據庫中獲得時,它無法取代上述情況。正如我嘗試.replaceAll ("a" , "??") ;及其工作。

數據庫中的數據是

布拉德利安布羅斯是誰記錄了約翰·基和約翰·班克斯茶會上的自由攝影師。\ r \ n \ r \ NHE故意放在一個黑色袋上的一個記錄裝置表中Key和Banks所在的位置,儘管他聲稱這是一個錯誤,如果那是真的,那麼很多人是如何得到它的副本的?\ r \ n \ r \ n此人血腥改變了他的名字從布拉德白色這個人究竟是一個神祕的國際人物還是什麼的。

我也調試過這個問題的細節。但是,即使代碼成功執行上述行,也不會被替換。 我也試試

replaceAll ("\n" , "<br/>") 
replaceAll ("\r" , "<br/>") 

有調試圖片。 enter image description here

回答

3

輸入字符串是否包含實際的CR和LF字符或\和r和\和n對?

正則表達式在後一種情況下不起作用。這將需要.replaceAll("\\\\r\\\\n" , "<br/>")

+0

感謝的人。只需嘗試一下你的代碼並且工作得很好 – Arslan

1

代碼沒問題。您在調試屏幕中看到的數據是錯誤的。執行相同的調試會話並插入system.out.println,並在調試屏幕中檢查包含輸出的輸出。

除非你是指數據庫實際上有字符串「\ r \ n」。上面假定數據庫實際上包含汽車返回和換行字符。如果你的數據庫實際上有反斜槓字符後跟'n'字符,那麼你的正則表達式需要一個簡單的調整。 s.replaceAll(「\\\\ r \\\\ n」,「
」)

1

你可以嘗試模式#quote()?

喜歡的東西:


System.out.println("hello\r\n\r\n something".replaceAll(Pattern.quote("\r\n"), "
"));
相關問題