У меня есть две строки.Как сравнить в C#
string a="50";
string b="60";
Теперь я хочу comapre значение строки а и Ь относительно их значений, то есть здесь Ь> а .. Что является лучшим способом для достижения этой цели?
У меня есть две строки.Как сравнить в C#
string a="50";
string b="60";
Теперь я хочу comapre значение строки а и Ь относительно их значений, то есть здесь Ь> а .. Что является лучшим способом для достижения этой цели?
Вам нужно преобразовать их в целые числа, чтобы иметь возможность сравнить их численно, так:
string a = "50";
string b = "60";
bool isBGreaterThanA = Convert.ToInt32(b) > Convert.ToInt32(a);
Лучший способ - преобразовать строку в целое и сравнить их.
Я бы конвертировать их в Целые перед сравнением. Но почему цифры являются строками?
Одним из примеров, которые я могу представить, является коллекция asp.net Request.QueryString [], все, что передается по этому пути, возвращается как строка. О, и «проклятие« новичков », рассматривающих все как строку, я думаю;) – Rob
Так верно, особенно если переходить с таких языков, как php ... – Sejanus
на самом деле это идет как строка, я не могу изменить ее на Int :-) , аналогично ситуации строки запроса – Wondering
Непонятно задал вопрос и предложил строку.Спасибо и не так.
Как насчет написать небольшое расширение для вашей строки, так что вы всегда можете запросить значение 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");
Я сделал небольшой пример для сравнения значений двух строк. Если они могут быть преобразованы в числа, то они будут сравнивать их числовое значение. В противном случае он будет сравнивать их по алфавиту.
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;
}
}
Вы также можете реализовать это как метод расширения строк.
Да, может быть методом расширения. – Wondering
должен ли я пойти 4 конвертировать или tryparse – Wondering
@Wondering: Это зависит от того, хотите ли вы, чтобы исключение было выбрано, если строки не являются целыми. –
@Wondering: Если ваши данные были проверены, не нужно использовать 'TryParse'. – leppie