如何防止 Html.fromHtml 修剪空格

How to prevent Html.fromHtml from trimming whitespace

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

String foo = "  foo bar  "

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

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

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

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

由于 Html.fromHtml() 将字符串解析为 html 标签和内容,您可能希望使用 space 的编码字符,即  

在你的代码中试试这个

String foo = "  foo bar  ";

注意:根据需要重复   次 space。

编辑: 如果您从其他地方获取字符串,则可以在传递

之前将 spaces 替换为  
String foo = getMyFoo();
foo = foo.replaceAll(" "," ");

尝试使用 TextUtils.htmlEncode(str).

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

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

Yazan的建议已经足够了,但既然你说字符串是动态生成的,你总是可以以新生成的字符串s为例,使用concat() method.For例子s.concat( "  ");

为了保留起始空格,此 Kotlin 代码似乎可以工作,并且可能不难适应使用结束空格:

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