2013-11-04 187 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>将不会被这种方式取代。