首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Html.fromHTML删除双倍空格

Html.fromHTML删除双倍空格
EN

Stack Overflow用户
提问于 2013-05-01 09:22:05
回答 5查看 5.8K关注 0票数 5

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

代码语言:javascript
复制
Html.fromHtml("Test   123").toString()
     (java.lang.String) Test 123

如果我用 替换空格,它看起来就像预期的那样,但在我程序的其他部分引起了我的悲哀:

代码语言:javascript
复制
Html.fromHtml("Test  123").toString()
     (java.lang.String) Test  123

这是预期的行为吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-05-01 09:29:12

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

HTML Spec (emphasis mine)中:

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

fromHtml函数的目标是根据包含的超文本标记语言可视化地呈现文本,因此它将尽可能地遵循超文本标记语言的呈现规则是有意义的。

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

票数 3
EN

Stack Overflow用户

发布于 2013-05-01 09:29:05

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

这样做:

代码语言:javascript
复制
String myText = "Test   123";
Html.fromHtml(myText.replace(" ", "&nbsp;")).toString()

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

票数 10
EN

Stack Overflow用户

发布于 2017-02-27 18:33:53

最佳方法适用于我100%

This answer可以工作,但会对<font color=#FFFFFF>Text</font>等标签样式产生副作用

要解决这个问题,只需使用下面的方法忽略一个空格:

代码语言:javascript
复制
// htmlText = "This    is test";
public String fixDoubleSpaceIssue(String htmlText)
{
    htmlText= text.replace("   ", "&nbsp;&nbsp;&nbsp;");
    htmlText= text.replace("  ", "&nbsp;&nbsp;");
    return htmlText;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16311416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档