Java 如何防止Html.fromHtml修剪空白

Java 如何防止Html.fromHtml修剪空白,java,android,removing-whitespace,Java,Android,Removing Whitespace,在Android Java项目中,我有一个类似这样的字符串(尽管两边的空格数量不同): 字符串两侧的空白很重要,因为实际字符串包含缩进代码,并突出显示HTML语法 当我通过Html.fromHtml传递字符串时,此起始和结束空格将被删除,但我需要将空格保留在那里: Html.fromHtml(foo).toString() // "foo bar" - I want " foo bar " 如何通过Html.fromHtml调用保留字符串两侧的空白 AsHtml.fromHtml()将字

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

字符串两侧的空白很重要,因为实际字符串包含缩进代码,并突出显示HTML语法

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

Html.fromHtml(foo).toString() // "foo bar" - I want "  foo bar  " 
如何通过
Html.fromHtml
调用保留字符串两侧的空白

As
Html.fromHtml()
将字符串解析为Html标记和内容,您可能希望使用编码字符作为空格,即

在你的代码中试试这个

String foo = "  foo bar  ";
注意:重复
所需的空格数

编辑: 如果您是从其他地方获取字符串,可以在传递它之前将空格替换为

String foo = getMyFoo();
foo = foo.replaceAll(" "," ");
As
Html.fromHtml()
将字符串解析为Html标记和内容,您可能希望使用编码字符作为空格,即

在你的代码中试试这个

String foo = "  foo bar  ";
注意:重复
所需的空格数

编辑: 如果您是从其他地方获取字符串,可以在传递它之前将空格替换为

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

尝试使用TextUtils.htmlEncode(str)

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


尝试使用TextUtils.htmlEncode(str)

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


Yazan的建议已经足够了,但是由于您说字符串是动态生成的,所以您可以始终以新生成的字符串s为例,使用concat()方法

Yazan的建议已经足够了,但是因为您说字符串是动态生成的,所以您可以始终以新生成的字符串s为例,使用concat()方法

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

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

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

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

我真的不能这样做-字符串是动态生成的,我的
foo
只是一个例子。无论如何,谢谢。@OrangeFlash81您可以使用
replaceAll()
,检查我的编辑我真的不能这样做-字符串是动态生成的,我的
foo
只是一个例子。不过还是要谢谢你。@OrangeFlash81你可以使用
replaceAll()
,检查我的编辑这看起来很值得一试——我会尽可能尝试的。谢谢这似乎不起作用-它只是将空间保持为空间。不过还是谢谢你。那么,试试
foo=foo.replaceAll(“,”)
这肯定会将空格替换为如果您想替换所有空白(包括空格和制表符),请尝试
foo=foo.replaceAll(“\\s”,”)问题是,我的真实字符串可能包含需要呈现的HTML,因此
将变成
而不会呈现。嗯..我认为用CDATA包装字符串可能可行。e、 g.
foo=String.format(“,foo”)
@OrangeFlash81这看起来值得一试——我会在可能的时候试试。谢谢这似乎不起作用-它只是将空间保持为空间。不过还是谢谢你。那么,试试
foo=foo.replaceAll(“,”)
这肯定会将空格替换为如果您想替换所有空白(包括空格和制表符),请尝试
foo=foo.replaceAll(“\\s”,”)问题是,我的真实字符串可能包含需要呈现的HTML,因此
将变成
而不会呈现。嗯..我认为用CDATA包装字符串可能可行。e、 g.
foo=String.format(“,foo”)@OrangeFlash81