C#如何读取\r\n字符串

标签 c# xml serial-port

首先,大家好!这是我的第一篇文章!

我正在编写一个应用程序来读取和写入串行端口,一切正常,但由于在我公司我们有不同类型的扫描仪,它们配置了不同的前缀/后缀字符,其中大多数都有\r\n 序列。

所以我决定在我的 xml 配置文件中包含这个后缀,如下所示:

<rPortSuffix>\r\n</rPortSuffix>

当我读取我的xml文件时,我使用这个

case "rPortSuffix":
    srPortSuffix = xmlReader.Value;
break;

问题是,当文本值传递给 srPortSuffix 时,变量存储的不是“\r\n”,而是“\\r\\n”,因此当我尝试读取串口时,没有任何反应由于不正确的后缀字符串(对于 NewLine 常量)

spRead.NewLine = srPortSuffix; //NewLine constant read in XML file
sReadData = spRead.ReadLine(); //Storing the read data 

所以我尝试了:

srPortSuffix= Regex.Replace(srPortSuffix, @"\\", @"\"); 

但没有成功。有什么建议吗?

长话短说

如何使从 xml 文件中读取的“\r\n”值完全像那样读取,而不是“\\r\\n”?

编辑:

按照 Jirka Hanika 的建议,我只是将我的字符串从“\r\n”更改为 ascii 代码,如下所示:

<rPortSuffix>&#13;&#10;</rPortSuffix>

现在我的应用程序可以用于我正在测试的两种扫描仪。

谢谢!!

最佳答案

您可能会混淆实际的字符串数据和它们在 C# 源代码中的表示方式。当然,C# 语法不适用于 XML 文件,因此 \r\n 与换行序列没有任何关系。

您显示的代码不会将其转换为 \\r\\n,但也不会将其转换为换行序列。

后者最简单的方法是:

srPortSuffix = srPortSuffix.Replace(@"\r", "\r").Replace(@"\n", "\n");

您基本上会做一些 C# 编译器通常为您做的事情,但完全在任何 C# 源代码之外。

还有一种更简单的替代方法,即不转换任何内容,直接将换行序列直接放入 XML 文件:

<rPortSuffix>
</rPortSuffix>

然而,这可能会被某些读者误解和/或破坏您 pretty-print 约定(结束标记不会缩进)。用 XML 编写相同内容的更脏但可能更实用的方法:

<rPortSuffix>&#13;&#10;</rPortSuffix>

关于C#如何读取\r\n字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11781810/

相关文章:

javascript - 如何在 html 中显示表示 XML 的字符串?

php - 使用表单发布XML值

php - 将 Zoho CRM 链接到 Kashflow 时在何处存储 XML 或 PHP 文件

C++:与 Arduino 的串行接口(interface)

c# - 哈希字符串以进行重复检测

c# - 通过反射创建的传递方法,作为 Func 参数

java - 如何将这个特定的 RFID 读取器与 Arduino 连接并获取 Java 的输入?

python - 如何从两个不同的进程访问串行端口 (Python)

c# - 表单设计器打破了通用抽象 UserControl

c# - 映射列表未从主列表中获取所有项目