Long.Parse() С#
Как бы преобразовать строку, например "-100,100", в С#.
В настоящее время у меня есть строка кода, которая
long xi = long.Parse(x, System.Globalization.NumberStyles.AllowThousands);
но это прерывается, когда x является "отрицательным числом".
Мой подход:
long xi = long.Parse("-100,253,1",
System.Globalization.NumberStyles.AllowLeadingSign & System.Globalization.NumberStyles.AllowThousands);
был ошибочным, поскольку он сломался.
Ответы
Ответ 1
дайте это go:
long xi = long.Parse(x, System.Globalization.NumberStyles.AllowThousands | System.Globalization.NumberStyles.AllowLeadingSign);
Возможно, потому, что вы объявляете флаги, вам может потребоваться объявить все возможные флаги, которые будут удалены.
Я только что подтвердил этот код как работающий в тестовом проекте с использованием заданного строкового значения в вопросе. Дайте мне знать, если это соответствует вашим требованиям. При объявлении нескольких флагов в одном параметре используйте | вместо &
изменить:
http://msdn.microsoft.com/en-us/library/cc138362.aspx
Найдите объяснение разных побитовых операторов в заголовке "Перечисления как битовые флаги" (это было труднее найти, чем я думал).
Ответ 2
Я бы использовал TryParse вместо Parse, чтобы избежать исключений, т.е.
long xi;
if (long.TryParse(numberString, System.Globalization.NumberStyles.AllowThousands | System.Globalization.NumberStyles.AllowLeadingSign, null, out xi))
{
// OK, use xi
}
else
{
// not valid string, xi is 0
}