2012-02-17 43 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引用,則可能會發生錯誤的比較。

您的問題還有很多可能的原因,但這不是因爲字符串比較忽略了雙引號。您在問題中提供的詳細信息越多,我們就越容易縮小您所看到的內容。