文字列の改行コード(\r、\r\n、\n)をHTMLの改行タグ(<br>)への変換をJavaで実施する方法を紹介します。
はじめに
文字列に含まれている改行コードをHTMLとして表示する場合でも、改行している状態で表示したいことはないでしょうか。
HTMLとして改行を表示するためには、改行コードを「brタグ」に変換する必要があります。
Javaに便利な関数やライブラリが用意されていないかと確認しましたが、執筆時点では見つけることはできませんでした。
そこで、PHPに類似している機能として「nl2br」という便利なメソッドがあります。今回は、そちらを参考にしたプログラムをJavaで表現する方法を紹介していきます。
紹介するサンプルプログラムは、正しくは「nl2br」と同じ動作はしません。「nl2br」は、改行コードを「brタグ」に置換するのではなく、改行コードの前に「brタグ」を追加する動作になっています。
環境
検証に使用した環境/ライブラリを次に記載します。
- Java
- バージョン:8
サンプルプログラム
改行コードを「brタグ」に変換するサンプルプログラムのソースコードと実行例を記載しています。
ソースコード
ソースコードは、コピーすれば使用できる状態になっています。必要であればコピーして使用してください。
/**
* 改行コードを<br />タグに変換した情報を返却する。<br>
* @param s 入力文字列
* @return 変換後の文字列を返却します。
*/
public static String nl2br(String s) {
return nl2br(s, true);
}
/**
* 改行コードを<br />、または、<br>タグに変換した情報を返却する。<br>
* @param s 入力文字列
* @param is_xhtml XHTML準拠の改行タグの使用する場合はtrueを指定します。
* @return 変換後の文字列を返却します。
*/
public static String nl2br(String s, boolean is_xhtml) {
if (s == null || "".equals(s)) {
return "";
}
String tag = is_xhtml ? "<br />" : "<br>";
return s.replaceAll("\\r\\n|\\n\\r|\\n|\r", tag);
}
「nl2br」では、対象改行コードを「\r\n」、「\n\r」、「\n」、「\r」としているため、合わせてそのように指定しています。
「brタグ」を「<br>」、「<br />」として出力するパターンが存在します。これは、変換したタグをXHTMLとして表示する場合、タグを「/>」で終了させる必要があるためです。
実行例
実行結果の例を記載しています。テストに使用した情報は「nl2br」に記載されている例を参考にしています。
シンプルな使用方法の実行例
nl2br("foo isn't\n bar")
上記例の出力結果は以下になります。改行コードが「<br />」に変換されています。
foo isn't<br /> bar
妥当なHTML形式マークアップ(is_xhtmlを使用する)の実行例
nl2br("Welcome\r\nThis is my HTML document", false)
上記例の出力結果は以下になります。改行コードが「<br>」タグに変換されています。
Welcome<br>This is my HTML document
さまざまな改行文字の実行例
nl2br("This\r\nis\n\ra\nstring\r")
上記例の出力結果は以下になります。複数の改行コードが「<br />」タグに変換されています。
This<br />is<br />a<br />string<br />
まとめ
Javaを使用して改行コードを「brタグ」に変換する方法を紹介しました。
サンプルプログラムには、HTML、XHTMLの両方を出力できるようタグを変換する処理があります。XHTMLを出力する必要がない場合は処理を削除して使用してもらえればと思います。