如何防止 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()
在一个 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()