我有一个带有成员"地址"的类,我从一个XML文件中读取,该文件具有以下格式(伪地址 - XML字段名称为"地址" - 未显示):
106-1190 Crescent St.\r \n Toronto Ont\r \n \nV2K 2Z6
我创建了一个多行文本框,以Accepts-Return属性设置为true的形式显示.
文本框显示以下内容,换行符不起作用
106-1190 Crescent St.\r \n Toronto Ont\r \n \nV2K 2Z6
我在网上寻找各种解决方案,我尝试过以下方法:
1)\n和\\n
2)\\ r \\n
如果我直接添加到属性,它的工作原理如下:
Address.Text = "106-1190 Crescent St.\r\nToronto Ont\r\nV2K 2Z6";
Run Code Online (Sandbox Code Playgroud)
但是,如果我从XML文件加载一个字符串变量并尝试将其分配给Text属性:
Address.Text = Employee.Address;
Run Code Online (Sandbox Code Playgroud)
这是行不通的.
我设置观察点来检查直接分配和变量赋值之间的差异,得到了这个差异:
直达:106-1190 Crescent St.\r \n Toronto Ont\r \n \nV2K 2Z6
变量:106-1190 Crescent St. \\ r \\n Toronto Ont \\ r \\n V2K 2Z6
所以在某些地方代码将反斜杠改为从XML字符串转换为变量的双反斜杠.
我真的不想解析我的XML字符串以删除额外的斜杠....我如何在XML文件中表示我的字符串数据,以便它只用单斜杠转换为正确的字符串变量,in为了让我的换行能够正常显示.
提前致谢.
文本框控件不解释转义,也不解释XML.所以这只是字符\ r和n.你需要处理字符串,用字符串@"\ r \n"代替"\ r \n".
Address.Text = Employee.Address.Replace(@"\r\n", "\r\n");
Run Code Online (Sandbox Code Playgroud)
这相当于此
Address.Text = Employee.Address.Replace("\\r\\n", "\r\n");
Run Code Online (Sandbox Code Playgroud)
因为@阻止在字符串中解释\.
编辑:根据评论,这是更好的形式,它转换为unix上的\n和Windows上的\ r \n.
Address.Text = Employee.Address.Replace("\\r\\n", Environment.NewLine);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6730 次 |
最近记录: |