为什么xml Web服务中的字符串在Android TextView中不显示换行符?

时间:2018-12-26 04:00:23

标签: android xml parsing textview newline

我将经典XML用作我的两个应用程序的Web服务后端,一个用纯Android编写,另一个用Flutter(iOS)编写。内置了unescape()函数的Flutter版本在解密XML中隐藏的换行符方面没有问题。但是,由于拥有多年的历史,并且周围有成千上万的程序员和解决方案,因此我无法使用广泛可用的解决方案(如

)在应用中以文字显示新行
str.replaceAll("\\r\\n", \r\n");
str.replaceAll("\\n", "\n");

而且,因为我正在获取字符串中的unicode,所以我也尝试过这样做以在HTML中显示

str.replace("\r\n", "<br />");
str.replace(" ", "&nbsp;");
txtView.setText(Html.fromHtml(str));

这些工作都没有,而我对此问题困扰了一段时间。这里有什么专家可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

我在URL下面发现了另一个类似您的问题

replace `\\r` with `\r` in string

使用replaceAll,您将必须使用.replaceAll(“ \\ r”,“ \ r”);因为

要在正则表达式中表示\,您需要对其进行转义,因此您需要使用pass \来正则表达式引擎。
但是要为单个\创建字符串文字,则需要将其写为“ \”。

更清晰的方法是使用replace(“ \ r”,“ \ r”);它将自动转义所有正则表达式元字符。

答案 1 :(得分:0)

在没有unicode解码的直接Web服务上工作之后,我能够在正则表达式中读取新行

(\\s{2})

这基本上意味着新行将以两个空格的形式到达。当然,执行以下操作可以解决我的问题

str.replaceAll("(\\s{2})", "\n\n");

用于纯ASCII / UTF-8文本,以下用于Unicode用于世界语言

str.replaceAll("(\\s{2])", "<br /><br />");

这不是最好的解决方案,但是已经解决了我的问题。