[英]Backslash containing string not able find in other string
我必须从注册表中获取\\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);
}
它读取字符直到特殊字符。
问题:在您的第一个Assignmenet( string check = "324214234\\r\\n";
)中,您没有转义特殊字符,因此\\r\\n
被视为特殊字符,并且分配的字符串将为324214234<newline>
,但是在第二个赋值中statement( 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 "";
}
}
如果定义的文字字符串开头没有@
,则\\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");
}
尝试这个:
string check = "324214234\r\n";
string value = Environment.NewLine;
if (check.Contains(value))
Console.WriteLine("TRUE");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.