2013-11-04 19 views
5

私はブラウザで正しく表示したいテキストをいくつか用意しています(新しい行は<br/>タグに置き換えられました)。他のすべてのHTMLタグをエスケープしたいと考えています。これを行う最善の方法は何ですか? nを <br>タグに置き換えます。

+0

これは、提供されたコードなしでは本当に助けになりません。私の経験では、\ nを使った文字列値もブラウザに正しく表示されます。たとえば、String型のmy Jsonデータは、使用することなくブラウザで正しくフォーマットされて表示されます。
cYn

+0

@cYn使用しているブラウザーはわかりませんが、私の誰も新しい行として\ nを表示しません。 –

+0

これは私がいくつかのコードを見る必要があったところです。あなたは実際にあなたのJavaコードに "\ n"を追加しなければなりませんか?または、ユーザーがEnterキーを押して、ユーザーが文字列に入力したすべてのテキストを保存できるようにしましたか? – cYn

答えて

11

これは最善の解決策ではありませんが、これはうまくいきます。ビューが文字列パラメータstrを受け入れる場合、@Html(HtmlFormat.escape(str).toString.replace("\n", "<br />"))は最初に文字列をエスケープし、\ nのすべてのインスタンスを<br />に置き換え、最後にhtmlに変換して、再生がすでにエスケープされた文字をエスケープしようとしないようにします。 \ rまたは\ r \ nもエスケープしたい場合は、別のreplaceを連鎖させるか、代わりに正規表現を使用してください。

+0

まあ、フレームワークがこのような一般的な使用事例にいくつかのユーティリティを提供することが予想されます。とにかく、HTML "エスケープ"にアクセスするには少なくとも簡単な方法があることを知ってうれしいです。ありがとう。 – szymond

+0

Play APIには良い選択肢のように見えるものは見つかりませんでしたが、おそらく1つあります。便宜上、これを別の関数にラップするほうが良いかもしれません。 –

0

最初にテキストをエスケープしてから、改行を<br>に置き換えてください。 <br>はこの方法では置き換えられません。

関連する問題