包含字符串的反斜杠无法在其他字符串中找到

时间:2014-02-19 12:54:57

标签: c#

我必须从注册表中取\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

3 个答案:

答案 0 :(得分:4)

第一个assignmenet(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");