Text Xamarin表单Android标签显示额外字符

Text Xamarin表单Android标签显示额外字符,text,xamarin.forms,xamarin.android,newline,Text,Xamarin.forms,Xamarin.android,Newline,我从嵌入的.txt文件中提取文本,然后将其显示在标签中。iOS很好,但Android显示了额外的字符。我错过了一些简单但不确定的事情。谢谢你的帮助 此文件(在.txt文件中): 0.2.3 -修复了拼写错误 -在滑出菜单中添加了版本号 -压扁的虫子 0.2.2 -已添加数据库更改日志。 -错误修复 0.2.1 -错误修复 变成这样: 将显示空格字符。我如何防止这种情况 检索文本: var assembly = typeof(MainMenuViewModel).GetTypeInfo().A

我从嵌入的.txt文件中提取文本,然后将其显示在标签中。iOS很好,但Android显示了额外的字符。我错过了一些简单但不确定的事情。谢谢你的帮助

此文件(在.txt文件中):

0.2.3
-修复了拼写错误
-在滑出菜单中添加了版本号
-压扁的虫子

0.2.2
-已添加数据库更改日志。
-错误修复

0.2.1
-错误修复

变成这样:

将显示空格字符。我如何防止这种情况

检索文本:

 var assembly = typeof(MainMenuViewModel).GetTypeInfo().Assembly;
 Stream stream = assembly.GetManifestResourceStream("ReleaseNotes.txt");

 var text = "";
 using (var reader = new StreamReader(stream))
 {
     text = reader.ReadToEnd();
 }
 ReleseNotesText = text;
标签:

<Label Text="{Binding ReleseNotesText}" HorizontalTextAlignment="Start" HorizontalOptions="Fill" VerticalOptions="CenterAndExpand" TextColor="{DynamicResource TextColor}" FontSize="18" />

您的换行符更有可能是嵌入文本文件流中的
\n

只需将它们转换为正确的环境换行符即可。换行符可能因运行平台而异。。。在.NET中,您拥有方便的
环境.NewLine
,因此:

ReleseNotesText = text.Replace("\n", Environment.NewLine);
编辑:查看注释中的确切文本文件后,它看起来像是使用U+2028 unicode序列换行。正确的更换代码为:

ReleseNotesText = text.Replace("\u2028", Environment.NewLine);

这是行不通的。字符串中没有可见的新行字符。奇怪的是,将.txt文件中的文本改为使用“\n”而不是按enter键移动到下一行,xamarin将其转义,因此结果是“\\n”。您能将txt文件上载到某个地方(不是复制粘贴,而是上载确切的文件)吗?这样我就可以查看字符了?您的文本文件包含UTF-8“E2-80-A8”换行符序列(unicode U+2028或行分隔符)。。。除了JavaScript(和iOS,正如它在您的示例中所显示的那样)之外,通常不支持将其作为正确的换行符。。。也许它来自Javascript生成的JSON?。使用
text.Replace(“\u2028”,Environment.NewLine)取而代之。我会编辑我的答案完美的JCL,这很有效。您使用哪个编辑器查看这些字符?我尝试了VSCode、VSMac、所有的原生Mac编辑器、google文档、SublimiteText,但都没有显示出来。我实际上复制并粘贴了文本(使用记事本++,但任何其他编辑器都可以),并用dotnetfiddle制作了一个小应用程序,以查看该字符的十六进制格式(我还测试了该解决方案,以防万一):。在dotnetfiddle编辑器中,它显示为一个红点(除非我使用
@
逐字使用该字符串,否则编译失败,因为它也将其作为换行符使用)。将其转换为UTF8字节并打印十六进制值。这在被解析后就不起作用了,这就是为什么我需要txt文件并且无法从stackoverflow问题中复制:-)