2011-11-27 39 views
0

我想比較C#中的兩個字符串,因爲我使用Interop接口從Excel中將它們拉出來。我的代碼如下:比較C#中的兩個字符串時,從Excel Interop

public Boolean isSameEdge(Edge e) 
    { 
     Boolean result = false; 
     String e1 = e.getNode1(); 
     String e2 = e.getNode2(); 
     int s1 = String.Compare(e1, Node1); 
     int s2 = String.Compare(e2, Node2); 

     if (s2 == 0 && s1 == 0) 
      result = true; 

     return result; 
    } 

我調試的代碼,我看到E1和節點1是完全一樣的字符串,因爲他們應該的。然而,String.Compare爲s1返回1,爲s2返回-1。幫幫我!

+0

顯然它們不是完全相同的字符串。你可以將它們轉換爲明確的格式(例如字節爲十六進制)併發布它們嗎? –

+2

通過使用一個'System.Text.Encoding'類可能值得在你選擇的編碼中得到一個字節數組。嘗試'System.Text.Encoding.Unicode.GetBytes(e1)'和類似的'e2'調用並比較字節值。這可能會告訴你,每個不同的地方。 –

+0

@Mark - 我該怎麼做?在Visual Studio中查看調試器中的值時,e1 =「我們」和node1 =「我們」。我如何將這些轉換爲十六進制?不確定如何做亞當要求的...... – WildBill

回答

4

假設String.Compare()沒有錯誤是非常安全的。這些字符串大概只有看上去一樣。小心不可打印的字符,如(char)0。使用String.ToCharArray()進行診斷。