将字符串与引号进行比较

时间:2012-02-17 07:05:50

标签: c# string quotation-marks

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

一个例子是

string1 = Hi "insert name" here.
string2 = Hi "insert name" here.

我想使用string1.equals(string2)。但似乎它告诉我字符串不相等。我该怎么做呢?请帮忙。

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

2 个答案:

答案 0 :(得分:3)

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

Console.WriteLine((s1 == s2).ToString()); //True

我没问题......

答案 1 :(得分:1)

.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

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

  1. 一个字符串可能包含不同的引号字符。例如,"this"“this”是完全不同的字符串。
  2. 由于其他内容不匹配,您的比较可能会失败。例如,一个字符串可能有尾随空格,另一个字符串可能没有。
  3. 您可能正在比较两个对象而不是两个字符串Object.Equals比较两个对象是否是同一个对象。如果您没有处理String引用,则可能会发生错误的比较。
  4. 您的问题还有很多可能的原因,但不是因为字符串比较忽略了双引号。您在问题中提供的详细信息越多,我们就越容易缩小您所看到的内容。