C # .Net Преобразование строки в двойное и int обработка пустой строки - PullRequest
1 голос
/ 17 марта 2012

Я пытаюсь преобразовать _string [1] в удвоенное значение и _string [2] в Int

, этот массив строк генерируется динамически.

строковое значение может быть пустым, или 1.1, или 1, или .1 как мне справиться с этим.

Я пытаюсь сделать это так.

string locale;
locale = System.Web.HttpContext.Current.Request.UserLanguages[0];
CultureInfo culture;
culture = new CultureInfo(locale);
 double cValue = Double.Parse(_string[1], culture.NumberFormat)
int sValue = Int32.Parse(_string[2], culture.NumberFormat)

это когда-нибудьдать мне неправильный ввод, когда есть пустая строка или десятичная строка

Ответы [ 3 ]

6 голосов
/ 17 марта 2012

Вы можете использовать double.TryParse.

// There's no need to initialize cValue since it's used as an 
// out parameter by TryParse which guarantees initialization.
// If TryParse fails the output parameter will be set it to 
// default(T), where T is double in this case, i.e. 0.

double cValue; 

if( Double.TryParse( line[8], out cValue ) )
{
    // success (cValue is now the parsed value)
}
else
{
    // failure (cValue is now 0)
}

или если вам нужно указать культуру

if(double.TryParse(line[8], NumberStyles.Any, CultureInfo.CurrentCulture, out cValue))
{
}

Если вы действительно хотите быть кратким, вы можете просто использовать это:

double cValue;
Double.TryParse( line[8], out cValue );

Дополнительные строки выше были только для демонстрации.

5 голосов
/ 17 марта 2012

Для двойного вы можете использовать троичный оператор, как это

double d = Double.TryParse(_string[1], out d) ? Convert.ToDouble(_string[1]) : 0;

Для обеспечения безопасности вы можете использовать метод try-catch или метод Double.TryParse, который является лучшим вариантом.

Если вы хотите отобразить это, вы получите 0 в качестве выхода. Вы можете превратить это в 0,00 с помощью следующей строки

string output = (String.Format("{0:0.00}", cValue));
0 голосов
/ 17 марта 2012

Попробуйте это ...

double cValue = 0.0;
int sValue = 0;

if(!String.IsNullOrEmpty(_string[1]))
{
   cValue = Convert.ToDouble(_string[1]);
}

if (!String.IsNullOrEmpty(_string[2]))
{
    sValue = Convert.ToInt32(_string[2]);
}  

http://msdn.microsoft.com/en-us/library/zh1hkw6k.aspx

Если ваша строка пуста или пуста, она не будет пытаться преобразовать ее.Это будет просто 0.0 или 0.

...