Html.fromHTML删除了双倍空格

时间:2013-05-01 01:22:05

标签: android

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

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

如果我用 替换空格,它似乎表现得像预期的那样,但让我对程序的其他部分感到悲伤:

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

这是预期的行为吗?

5 个答案:

答案 0 :(得分:8)

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

做这样的事情:

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

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

答案 1 :(得分:2)

这就是HTML通常处理空白渲染的方式。

来自HTML Spec强调我的):

  

请注意源中单词之间的一系列空格   文档可能会导致完全不同的渲染字间   间距(PRE元素除外)。 特别是用户   代理应在生成时折叠输入的空格序列   输出字间空间。这甚至可以在   没有语言信息


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

如果您想要准确保留空白区域,可以看到fromHtml()是否支持<pre>代码?

答案 2 :(得分:0)

因为Html.fromHtml使用与浏览器用来解析HTML相同的规则,是的,根据this questionany other HTML reference,预计会将多个空格合并为一个。

答案 3 :(得分:0)

最佳方法适用于我100%

This回答有效,但会对<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;
}

答案 4 :(得分:-3)

我使用了以下内容并且有效!

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