2013-11-04 126 views
5

我有一些用戶提供的文本,我想在瀏覽器中正確顯示(用新行代替<br/>標籤)。我希望所有其他HTML標記都能被轉義。什麼是最好的方法來做到這一點?替換 n與<br>標籤

+0

如果沒有提供一些代碼,這真的很難提供幫助。根據我的經驗,即使\ n的字符串值在瀏覽器中正確顯示。例如,我的字符串類型的Json數據在瀏覽器中顯示爲正確格式,而無需使用
cYn

+0

@cYn我不知道您使用的是哪種瀏覽器,但我的所有瀏覽器都不會將\ n顯示爲新行。 –

+0

這是我需要看到一些代碼的地方。您是否真的必須在Java代碼中追加「\ n」?還是你允許用戶按下回車鍵並存儲用戶在字符串中輸入的所有文本? – cYn

回答

11

不是最漂亮的解決方案,但是這會起作用。如果視圖接受字符串參數str,則@Html(HtmlFormat.escape(str).toString.replace("\n", "<br />"))將首先轉義字符串,然後用<br />替換\ n的所有實例,最後將其轉換爲html,以便Play不會嘗試轉義已經轉義的字符。如果你想逃避\ r或\ r \ n,你可以鏈接另一個replace,或使用正則表達式代替。

+0

那麼,我會期待這個框架能爲這樣一個常見的用例提供一些utils。無論如何,很高興知道至少有一種簡單的方式來訪問HTML「引誘者」。謝謝。 – szymond

+0

我在Play API中找不到任何看起來更好的選項,但也許有一個。爲了方便起見,將其包裝到另一個函數中可能會更好。 –

0

先轉義文本,之後用<br>替換換行符。 <br>將不會被這種方式取代。