0

textarea があり、そこからテキストを処理して複数の改行を削除しようとしています。具体的には、改行が 2 行を超えて最大 2 行になる場合です。しかし、どういうわけかString.replace("\r\n\r\n\r\n", "\r\n\r\n")うまくいかないようです。

なんで?

調べてみると、置換された文字列も表示されます 16進コードがたくさんあります 0d0a0d0a0d0a0d0a0d

参考までに、これは私が使用している方法です:

public static String formatCommentTextAsProvidedFromUser(String commentText) {
  commentText = commentText.trim();
  commentText = commentText.replace("\n\n\n", "\n\n");
  commentText = commentText.replace("\r\n\r\n\r\n", "\r\n\r\n");
  try {
    Logger.getLogger(CommonHtmlUtils.class.getName()).info("Formated = "  + String.format("%040x", new BigInteger(1, commentText.getBytes("UTF-8"))));
  } catch (UnsupportedEncodingException ex) {
    Logger.getLogger(CommonHtmlUtils.class.getName()).log(Level.SEVERE, null, ex);
  }
  return commentText;
}

よくわかりません。置換後に 0a 0d が複数回発生するのはなぜですか?

4

1 に答える 1

1

正規表現を使用できます。例えば:

commentText = commentText.replaceAll("(\r?\n){3,}", "\r\n\r\n");

これにより、さらに 3 つの改行が 2 つの改行に置き換えられます。

In another way, you may want to use the default system line separator:

String lineSeparator = System.getProperty("line.separator");

So,

commentText = commentText.replaceAll("(\r?\n){3,}", 
                                      lineSeparator + lineSeparator);
于 2013-10-28T19:57:34.143 に答える