如何防止Html.fromHtml修剪空格

时间:2016-07-21 07:49:48

标签: java android removing-whitespace

在Android Java项目中,我有一个像这样的字符串(尽管两边都有不同数量的空白):

String foo = "  foo bar  "

字符串两边的空格很重要,因为实际字符串包含带有HTML语法高亮显示的缩进代码。

当我通过Html.fromHtml传递字符串时,会删除此开始和结束空格,但我需要在那里保留空格:

Html.fromHtml(foo).toString() // "foo bar" - I want "  foo bar  " 

如何通过Html.fromHtml调用保留字符串两侧的空白?

4 个答案:

答案 0 :(得分:1)

尝试使用TextUtils.htmlEncode(str)。

此方法将转义所有html字符串字符。

https://developer.android.com/reference/android/text/TextUtils.html#htmlEncode(java.lang.String)

答案 1 :(得分:0)

由于Html.fromHtml()将字符串解析为html标记,因此您可能希望将编码字符用于 

的空格

在您的代码中尝试此操作

String foo = "  foo bar  ";

注意:重复 您需要显示的空格。

修改 如果从其他地方获取字符串,则可以在传递空格之前用 替换空格

String foo = getMyFoo();
foo = foo.replaceAll(" "," ");

答案 2 :(得分:0)

Yazan的建议已经足够了,但是既然你说字符串是动态生成的,你总是可以把新生成的字符串作为例子并使用concat()方法。例如s.concat(“& nbsp”) ;

答案 3 :(得分:0)

为了保留起始空格,这个Kotlin代码似乎有用,并且可能不适合用于结束空格:

fun replaceWithNonBreakingAtStart(str: String) = (1..(str.takeWhile { it == ' ' }.count())).map { " " }.joinToString("") + str.trimStart()