我必须从注册表中取\r\n
并与另一个字符串进行比较,即检查变量是否包含\r\n
。
请查看此代码,其结果不是“TRUE”。请解决这个问题。
class Program
{
static void Main(string[] args)
{
string check = "324214234\r\n";
RegistryKey regKey = Registry.LocalMachine.CreateSubKey("SOFTWARE\\MyRegKey\\Settings");
regKey.SetValue("ReceiveSplChar", @"\r\n");
string value = regKey.GetValue("ReceiveSplChar").ToString();
if (check.Contains(value))
Console.WriteLine("TRUE");
}
}
编辑:
在这里输入代码
string SuffixValue = regKey.GetValue("ReceiveSplChar").ToString();
if (SuffixValue != null)
_RCVData = _SetSerialPort.ReadTo(SuffixValue);
else
_RCVData = _SetSerialPort.ReadLine();
if (SerialDataEvent != null)
{
SerialDataEvent(_RCVData);
}
它读到角色,直到特殊角色。它可以是\ r \ n或\ t或\ u
答案 0 :(得分:4)
string check = "324214234\r\n";
)中的 问题:您没有转义特殊字符,因此将\r\n
视为特殊字符并指定字符串为324214234<newline>
,但在您的第二个作业声明(regKey.SetValue("ReceiveSplChar", @"\r\n");
)中,您使用@
转义特殊字符,以便指定的字符串完整324214234\r\n
解决方案:
替换它:
string check = "324214234\r\n";
有了这个:
string check = @"324214234\r\n";
编辑:如果您想查找任何一个(\r\n,\n,\t
)符号的结束字符/符号,可以使用以下示例代码:
class Program
{
static void Main(string[] args)
{
String str="12345\t";
string endingSymbol=GetEndingSymbol(str);
}
//returns the ending symbol of a given string
static string GetEndingSymbol(string str)
{
if(str.IndexOf("\r\n")>=0)
return "\r\n";
else if(str.IndexOf("\n")>=0)
return "\n";
else if(str.IndexOf("\t")>=0)
return "\t";
return "";
}
}
答案 1 :(得分:2)
如果您在开头定义了没有@
的文字字符串,那么\r\n
将被视为特殊字符。另一方面,如果您之前使用@
,则无法完成转义并获得您所看到的内容("
除外。
尝试:
static void Main(string[] args)
{
string check = @"324214234\r\n";
RegistryKey regKey = Registry.LocalMachine.CreateSubKey("SOFTWARE\\MyRegKey\\Settings");
regKey.SetValue("ReceiveSplChar", @"\r\n");
string value = regKey.GetValue("ReceiveSplChar").ToString();
if (check.Contains(value))
Console.WriteLine("TRUE");
}
答案 2 :(得分:-1)
试试这个:
string check = "324214234\r\n";
string value = Environment.NewLine;
if (check.Contains(value))
Console.WriteLine("TRUE");