5

也许这不是一个错误,因为文档并没有详细说明fromHTML()究竟做了什么,但这对我来说仍然是一个问题。如果提供的字符串依次包含两个或多个空格,fromHTML()则删除除一个以外的所有空格:

Html.fromHtml("Test   123").toString()
     (java.lang.String) Test 123

如果我用它替换空格 似乎会按预期运行,但会让我在程序的其他部分感到悲伤:

Html.fromHtml("Test  123").toString()
     (java.lang.String) Test  123

这是预期的行为吗?

4

5 回答 5

10

是的,因为这就是 Html 的行为方式。

做这样的事情:

String myText = "Test   123";
Html.fromHtml(myText.replace(" ", " ")).toString()

这样,它会保留字符串的原始值。

于 2013-05-01T01:29:04.973 回答
3

这就是 HTML 通常处理空白的呈现方式。

HTML 规范强调我的):

请注意,源文档中单词之间的一系列空格可能会导致呈现完全不同的单词间距(PRE 元素的情况除外)。特别是,用户代理在产生输出字间距时应该折叠输入的空白​​序列。即使在没有语言信息的情况下也可以而且应该这样做


fromHtml函数的目标是根据包含的 HTML 直观地呈现文本,因此它会尽可能地遵循 HTML 呈现规则。

如果您想准确保留空白,您可以查看是否fromHtml()支持该<pre>标签?

于 2013-05-01T01:29:11.987 回答
2

最好的方法对我有用 100%

答案有效,但会对某些标签样式产生副作用,例如<font color=#FFFFFF>Text</font>

要解决这个问题,只需用这种方式忽略一个空格:

// htmlText = "This    is test";
public String fixDoubleSpaceIssue(String htmlText)
{
    htmlText= text.replace("   ", "&nbsp;&nbsp;&nbsp;");
    htmlText= text.replace("  ", "&nbsp;&nbsp;");
    return htmlText;
}
于 2017-02-27T10:33:52.517 回答
0

as使用与浏览器解析 HTML 相同的规则,是的,根据这个问题任何其他 HTML 参考Html.fromHtml,预计多个空格会折叠成一个。

于 2013-05-01T01:28:52.680 回答
-3

我使用了以下,它的工作!

myText = myText.replaceAll(" ", "%20"); myText = Html.fromHtml(myText).toString(); myText = myText.replaceAll("%20", " ");

于 2014-03-27T10:11:08.110 回答