2012-02-17 68 views
0

你好家伙我想在C#中创建一个程序,在这里我比较两个字符串中的字符串,他们有双引号。我的问题是我如何比较他们的平等,因为它似乎编译器忽略引号内的单词,并没有给我正确的比较。用引号比较字符串

的一个例子是,如果

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

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

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

+0

使用转义字符。 – Jayy 2012-02-17 07:12:07

+0

被比较的字符串被设计为不具有转义字符,因为它们是来自excel文件的固定消息。 – user1215604 2012-02-17 07:17:37

+0

我无法控制字符串的外观,因为它们是动态变量。 – user1215604 2012-02-17 07:19:55

回答

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

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

我没有问题...

+0

是的,我知道如果按这种方式输入字符串,就不会有问题。但是这些字符串在excel电子表格中,写成“Hi”插入名称“在这里”。 – user1215604 2012-02-17 07:16:09

+0

我无法控制字符串的外观,因为它们是动态变量 – user1215604 2012-02-17 07:21:54

+0

当您从该excel电子表格读取并将其分配给变量时,将不会“Hi”插入名称“here”变成“Hi”插入名称\“这里”? – Tung 2012-02-17 07:45:00

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引用,则可能会发生错误的比较。

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