2010-02-24 48 views
1

我有兩個字符串。如何比較C#

   string a="50"; 
       string b="60"; 

現在我想相對於它們的值comapre串a和b的值,即在這裏B> A .. 什麼是實現這一目標的最佳方式是什麼?

回答

5

你需要將它們轉換爲整數能夠將它們數字比較,所以:

string a = "50"; 
string b = "60"; 
bool isBGreaterThanA = Convert.ToInt32(b) > Convert.ToInt32(a); 
+0

我應該去4 convert或tryparse – Wondering 2010-02-24 10:30:23

+1

@Wondering:這取決於如果字符串不是真正的整數,是否要拋出異常。 – 2010-02-24 10:31:18

+0

@Wondering:如果您的數據已經過驗證,則無需使用TryParse。 – leppie 2010-02-24 10:31:27

0

最好的方法是將字符串轉換爲整數並比較它們。

0

我想將它們轉換爲整數比較之前。但爲什麼有數字作爲字符串?

+0

我能想到的一個例子是asp.net的Request.QueryString []集合,任何圍繞該方式傳遞的東西都會以字符串形式返回。噢,和「新手詛咒」的一切都視爲一個字符串,我猜;) – Rob 2010-02-24 10:31:08

+0

所以真的,尤其是如果從像php這樣的語言移動... – Sejanus 2010-02-24 10:33:39

+0

實際上這是作爲字符串來的,我不能將其更改爲Int :-) ,類似於查詢字符串情況 – Wondering 2010-02-24 10:37:28

-3

誤解了這個問題,並提出了string.Compare和was wrong。

如何寫一個小擴展到您的字符串,這樣就可以隨時尋求它的int值節省您解析或在不同的地點代碼」

public static class stringExtensions 
{ 
    public static int IntValue(this string s) 
    { 
     int res = 0; 
     if (int.TryParse(s, out res)) 
      return res; 
     return int.MaxValue; 
    } 
} 

你一遍又一遍地把它轉換可以像這樣使用它

Console.WriteLine (b.IntValue() > a.IntValue()? "b > a" : "a >= b"); 
3

我做了一個小例子來比較兩個字符串的值。如果它們可以轉換爲數字,那麼它會比較它們的數字值。否則,它會按字母順序進行比較。

private bool GreaterThan(string firstString, string secondString) 
{ 
    int firstNumber; 
    int secondNumber; 

    if (int.TryParse(firstString, out firstNumber) && int.TryParse(secondString, out secondNumber)) 
    { 
     return firstNumber > secondNumber; 
    } 
    else 
    { 
     // Greater than 0 means the instance follows the value 
     return firstString.CompareTo(secondString) > 0; 
    } 
} 

您也可以將其實現爲字符串擴展方法。

+0

是的,可以是擴展方法。 – Wondering 2010-02-24 11:31:56