2010-02-24 2 views
1

У меня есть две строки.Как сравнить в C#

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

Теперь я хочу comapre значение строки а и Ь относительно их значений, то есть здесь Ь> а .. Что является лучшим способом для достижения этой цели?

ответ

5

Вам нужно преобразовать их в целые числа, чтобы иметь возможность сравнить их численно, так:

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

должен ли я пойти 4 конвертировать или tryparse – Wondering

+1

@Wondering: Это зависит от того, хотите ли вы, чтобы исключение было выбрано, если строки не являются целыми. –

+0

@Wondering: Если ваши данные были проверены, не нужно использовать 'TryParse'. – leppie

0

Лучший способ - преобразовать строку в целое и сравнить их.

0

Я бы конвертировать их в Целые перед сравнением. Но почему цифры являются строками?

+0

Одним из примеров, которые я могу представить, является коллекция asp.net Request.QueryString [], все, что передается по этому пути, возвращается как строка. О, и «проклятие« новичков », рассматривающих все как строку, я думаю;) – Rob

+0

Так верно, особенно если переходить с таких языков, как php ... – Sejanus

+0

на самом деле это идет как строка, я не могу изменить ее на Int :-) , аналогично ситуации строки запроса – Wondering

-3

Непонятно задал вопрос и предложил строку.Спасибо и не так.

Как насчет написать небольшое расширение для вашей строки, так что вы всегда можете запросить значение 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

Смежные вопросы