C# 比较带引号的字符串

C# 比较带引号的字符串,c#,string,quotation-marks,C#,String,Quotation Marks,大家好,我正在尝试用C语言创建一个程序,在这个程序中,我比较两个字符串,其中字符串中有双引号。我的问题是如何比较它们是否相等,因为编译器似乎忽略了引号内的单词,并且没有给出正确的比较 例如,如果 string1 = Hi "insert name" here. string2 = Hi "insert name" here. 我想使用string1.equals(string2)。但它似乎告诉我弦是不相等的。我该怎么做?请帮忙 另外,我无法控制字符串的外观,因为它们是动态变量。所以我不能只说添

大家好,我正在尝试用C语言创建一个程序,在这个程序中,我比较两个字符串,其中字符串中有双引号。我的问题是如何比较它们是否相等,因为编译器似乎忽略了引号内的单词,并且没有给出正确的比较

例如,如果

string1 = Hi "insert name" here.
string2 = Hi "insert name" here.
我想使用
string1.equals(string2)
。但它似乎告诉我弦是不相等的。我该怎么做?请帮忙

另外,我无法控制字符串的外观,因为它们是动态变量。所以我不能只说添加一个转义序列

string s1 = "Hi \"insert name\" here.";
string s2 = "Hi \"insert name\" here.";

Console.WriteLine((s1 == s2).ToString()); //True
我没有问题


我没有问题…

.NET在进行比较时不会忽略带双引号的字符串值。我认为你对正在发生的事情的分析是有缺陷的。例如,给定这些值:

var string1 = "This contains a \"quoted value\"";
var string2 = "This contains a \"quoted value\"";
var string3 = "This contains a \"different value\"";
string1.Equals(string2)
将等于
true
,而
string2.Equals(string3)
将等于
false

以下是您在比较时没有看到预期结果的一些潜在原因:

  • 一个字符串可能包含不同的引号字符。例如,
    “this”
    “this”
    是完全不同的字符串
  • 由于其他内容不匹配,您的比较可能失败。例如,一个字符串可能有尾随空格,而另一个可能没有
  • 您可能正在比较两个对象,而不是两个字符串<代码>对象。等于比较两个对象是否为同一对象。如果您没有处理
    String
    引用,则可能会发生错误的比较

  • 问题的潜在原因还有很多,但这并不是因为字符串比较忽略了双引号。您在问题中提供的详细信息越多,我们就越容易缩小您看到的内容。

    .NET在进行比较时不会忽略带双引号的字符串值。我认为你对正在发生的事情的分析是有缺陷的。例如,给定这些值:

    var string1 = "This contains a \"quoted value\"";
    var string2 = "This contains a \"quoted value\"";
    var string3 = "This contains a \"different value\"";
    
    string1.Equals(string2)
    将等于
    true
    ,而
    string2.Equals(string3)
    将等于
    false

    以下是您在比较时没有看到预期结果的一些潜在原因:

  • 一个字符串可能包含不同的引号字符。例如,
    “this”
    “this”
    是完全不同的字符串
  • 由于其他内容不匹配,您的比较可能失败。例如,一个字符串可能有尾随空格,而另一个可能没有
  • 您可能正在比较两个对象,而不是两个字符串<代码>对象。等于比较两个对象是否为同一对象。如果您没有处理
    String
    引用,则可能会发生错误的比较

  • 问题的潜在原因还有很多,但这并不是因为字符串比较忽略了双引号。您在问题中提供的详细信息越多,我们就越容易缩小您看到的内容。

    是的,我知道,如果以这种方式键入字符串,您就不会有问题。但是这些字符串在excel电子表格中,写为“Hi”insert name“here”。“我无法控制字符串的外观,因为它们是动态变量。当您从excel电子表格中读取并将其分配给变量时,“Hi”insert name“here”不会变成“Hi\”insert name“here”?假设您使用的是visual studio,请在变量位于作用域中的位置设置断点,然后打开即时窗口(ctrl+alt+i),并键入变量的名称。您将看到它的表示形式很可能如@Alex所描述的那样。在即时窗口中查看字符串还将显示特殊字符,如换行符和回车符。顺便问一下,您现在如何查看字符串值?如果您将鼠标悬停在变量上并单击放大镜图标,则不会看到用于转义引号的反斜杠。是的,我知道如果以这种方式键入字符串,您不会有问题。但是这些字符串在excel电子表格中,写为“Hi”insert name“here”。“我无法控制字符串的外观,因为它们是动态变量。当您从excel电子表格中读取并将其分配给变量时,“Hi”insert name“here”不会变成“Hi\”insert name“here”?假设您使用的是visual studio,请在变量位于作用域中的位置设置断点,然后打开即时窗口(ctrl+alt+i),并键入变量的名称。您将看到它的表示形式很可能如@Alex所描述的那样。在即时窗口中查看字符串还将显示特殊字符,如换行符和回车符。顺便问一下,您现在如何查看字符串值?如果将鼠标悬停在变量上并单击放大镜图标,然后您将看不到用于转义引号的反斜杠。正在比较的字符串被设计为没有转义字符,因为它们是来自excel文件的固定消息。我无法控制字符串的外观,因为它们是动态变量。正在比较的字符串被设计为没有转义字符因为它们是来自excel文件的固定消息。我无法控制字符串的外观,因为它们是动态变量。