也许这不是一个错误,因为文档没有详细说明fromHTML()
究竟做了什么,但这对我来说仍然是一个问题。如果提供的字符串按顺序包含两个或多个空格,fromHTML()
将删除除一个以外的所有空格:
Html.fromHtml("Test 123").toString()
(java.lang.String) Test 123
如果我用
替换空格,它似乎表现得像预期的那样,但让我对程序的其他部分感到悲伤:
Html.fromHtml("Test 123").toString()
(java.lang.String) Test 123
这是预期的行为吗?
答案 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 question和any other HTML reference,预计会将多个空格合并为一个。
答案 3 :(得分:0)
最佳方法适用于我100%
This回答有效,但会对<font color=#FFFFFF>Text</font>
要解决此问题,请以这种方式忽略一个空格:
// htmlText = "This is test";
public String fixDoubleSpaceIssue(String htmlText)
{
htmlText= text.replace(" ", " ");
htmlText= text.replace(" ", " ");
return htmlText;
}
答案 4 :(得分:-3)
我使用了以下内容并且有效!
myText = myText.replaceAll(" ", "%20");
myText = Html.fromHtml(myText).toString();
myText = myText.replaceAll("%20", " ");