繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM