簡體   English   中英

用java中的<br />替換\ n和\ r \ n

[英]replace \n and \r\n with <br /> in java

有幾種語言曾多次詢問過這種情況,但我無法使用它。 我有這樣的字符串

String str = "This is a string.\nThis is a long string.";

而我正試圖用<br />取代\\n

str = str.replaceAll("(\r\n|\n)", "<br />");

但是\\n沒有被取代。 我嘗試使用此RegEx工具進行驗證,我看到相同的結果。 輸入字符串與"(\\r\\n|\\n)"不匹配。 我究竟做錯了什么 ?

這個對我有用。

public class Program
{
    public static void main(String[] args) {
        String str = "This is a string.\nThis is a long string.";
        str = str.replaceAll("(\r\n|\n)", "<br />");
        System.out.println(str);
    }
}

結果:

This is a string.<br />This is a long string.

你的問題在別的地方。

你正在嘗試的更強大的版本:

str = str.replaceAll("(\r\n|\n\r|\r|\n)", "<br />");

對我來說,這工作:

rawText.replaceAll("(\\\\r\\\\n|\\\\n)", "\\\n");

提示:使用正則表達式測試程序進行快速測試,無需在您的環境中進行編譯

由於我的帳戶是新的,我無法對Nino van Hooff的回答進行投票。 如果您的字符串來自基於Windows的源,例如基於aspx的服務器,則此解決方案可以正常工作:

rawText.replaceAll("(\\\\r\\\\n|\\\\n)", "<br />");

似乎是一個奇怪的字符集問題,因為雙反斜杠被解釋為單斜杠轉義字符。 因此需要上面的四倍斜線。

同樣,在大多數情況下"(\\\\r\\\\n|\\\\n)"應該可以正常工作,但如果您的字符串來自基於Windows的源,請嘗試以上操作。

只是一個FYI嘗試了一切來糾正我正在替換那些行結尾的問題。 首先想到的是從Windows-1252UTF-8轉換失敗。 但那也沒有奏效。 這個解決方案終於成功了。 :)

這個對我有用。 Java代碼與您編寫的完全一樣。 在測試器中,輸入字符串應為:

This is a string.
This is a long string.

......帶有真正的換行符。 你不能使用:

This is a string.\nThis is a long string.

...因為它將\\n視為字面序列反斜杠'n'

這應該有效,但不要試圖弄明白自己。 只需使用2次傳球。

str  = str.replaceAll("(\r\n)", "<br />");
str  = str.replaceAll("(\n)", "<br />");

免責聲明:這不是很有效。

這應該工作。 你需要加兩個斜杠

str = str.replaceAll("(\\r\\n|\\n)", "<br />");

在本參考文獻中 ,有一個例子顯示

private final String REGEX = "\\d"; // a single digit

我在我的許多項目中使用了兩個斜線,它似乎工作正常!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM