【问题标题】:Linebreaks are ignored in Html.fromHtmlHtml.fromHtml 中的换行符被忽略
【发布时间】:2015-01-05 15:42:25
【问题描述】:

我从 API 收到带有换行符的文本,但我无法让换行符起作用。

这是我要显示的文本的一部分。 http://pastebin.com/CLnq16mP(因为stackoverflow上的格式不正确所以粘贴在那里。)

我试过了:

termsAndConditionsTextView.setText(Html.fromHtml("<html><body>" + textResponse.getText() + "</body></html>"));

还有这个:

termsAndConditionsTextView.setText(Html.fromHtml(textResponse.getText()));

但总是忽略换行符 (\r\n) 和空格。

我该如何解决这个问题?

【问题讨论】:

  • 应该用
    标签替换 \r\n 并用   替换你想要保留的空格在解析 HTML 之前

标签: android html line-breaks


【解决方案1】:

由于它的 html 尝试使用

</br>

您可以通过执行以下操作替换文本中的所有 \r\n 和空格:

    //message is your string.

    message = message.replace("\r\n","<br />");
    message = message.replace(" ","&nbsp;");
    termsAndConditionsTextView.setText(Html.fromHtml(message));

祝你好运!

【讨论】:

  • \r 字符和“忽略”空格怎么样? 也是无效的。
  • 您可以用
    替换 \r\n,而不仅仅是 \n。 html 不识别 \n 或 \r 它确实知道
    。和空格可以替换为 &nbsp
  • 所以 \r 将保留在所有行的末尾?
  • 所以 \r\n 与
    相同。它们都表示换行符。只是在某些系统(Windows)中他们使用\r\n,在其他系统中他们只使用\n。因此,只需将所有 \r\n 替换为
    就可以了。然后用   替换所有空格生病更新一下答案,试试看它是什么样子。
  • 粘贴的文本包含那些\r\n,这就是我问这个的原因。在这种情况下仅替换 \n 会将 \r 保留在所有行的末尾
【解决方案2】:

由于文本是预先格式化的,即使有缩进,您也可以使用&lt;pre&gt; 标签。

<pre>
   your text.
</pre>

但换行符显然在哪里转义:\r\n 所以你仍然需要转换:

message = message.replace("\\r\\n", "\r\n");

\/ 也是如此。

如果你想引入粗体、超链接等,那么&lt;pre&gt;标签会失败,因为它只能包含预先格式化的原样文本,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-22
    • 2021-06-17
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多