簡體   English   中英

用\\ n讀取字符串中的新行

[英]Reading a new line in a string with \n

構建字符串時,可以像這樣創建換行符:

"This is the first line \n\n And this is the second line";

因此,當運行這部分代碼時,所有代碼都可以在Android模擬器上正常運行:

TextView newsTextArea = (TextView) view.findViewById(R.id.newsTextView);
newsTextArea.setText("Hello \n\n Whats up");

但是,我已經從創建的Web服務下載並解析了JSON,並且將所需的內容存儲在這樣的變量中:

GlobalSettings globalSettings = new GlobalSettings();
String newsText = globalSettings.getNews();

因此變量newsText等於一個字符串,為了便於說明,這里可以說是"Hello, this has two lines. \\n\\n Welcome to the test"

當我像這樣運行上面的TextView代碼時,它以\\n\\n作為文字字符輸出。

newsTextArea.setText(newsText);

如何使變量newsText保持格式?

我是一個很好的猜測者..大聲笑我可能有太多原因

1. newsTextArea.setSingleLine(false);
2. newsTextArea.setMinLines(2); or newsTextArea.setMaxLines(50);//any figure
3. String newsText = globalSettings.getNews().replace("\\\n", System.getProperty("line.separator"));
4. String newsText = globalSettings.getNews().toString();

玩這些方法,看看有沒有一個適合你,或者兩個都笑了

但是,我已經從我們創建的Web服務下載並解析了JSON ...

您的JSON WS有很大的機會返回文化序列\\n作為其輸出。 不是您期望的換行字符<LF> )。

此時,您可能有兩個選擇:

  • 修復Web服務以返回正確的值
  • 更改您的客戶端程序以“修補”錯誤的數據,以獲得所需的行為。 就我自己而言,我不會朝着這個方向努力,因為它將很快成為維護的噩夢(合法的\\會突然出現在您的數據中)。

也許是時候發布另一個有關您的JSON Web服務的問題了嗎?

無論文本最初來自何處,反斜杠都有可能被轉義。 例如,它可能來自您服務中的硬編碼常量,然后由人工輸入到表單中然后經過驗證等。

在解析之前,請以原始格式查看JSON。 JSON規范說,單個反斜杠后跟n表示換行符。 如果看起來像["Hello, this has two lines. \\n\\n Welcome to the test"]那么您應該很好,因為JSON解析器應該正確解釋換行符。 但是,如果看起來像這樣: ["Hello, this has two lines. \\\\n\\\\n Welcome to the test"] ,則轉義了反斜杠字符,而不是n。

暫無
暫無

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

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