Java 如何防止Html.fromHtml修剪空白
在Android Java项目中,我有一个类似这样的字符串(尽管两边的空格数量不同): 字符串两侧的空白很重要,因为实际字符串包含缩进代码,并突出显示HTML语法 当我通过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()将字
Html.fromHtml
传递字符串时,此起始和结束空格将被删除,但我需要将空格保留在那里:
Html.fromHtml(foo).toString() // "foo bar" - I want " foo bar "
如何通过Html.fromHtml
调用保留字符串两侧的空白 AsHtml.fromHtml()
将字符串解析为Html标记和内容,您可能希望使用编码字符作为空格,即
在你的代码中试试这个
String foo = " foo bar ";
注意:重复
所需的空格数
编辑:
如果您是从其他地方获取字符串,可以在传递它之前将空格替换为
String foo = getMyFoo();
foo = foo.replaceAll(" "," ");
AsHtml.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