C#.Net将字符串转换为double,并将int处理为空字符串

时间:2012-03-16 21:23:34

标签: c# typeconverter string

我正在尝试将 _string [1]转换为double ,将 _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 个答案:

答案 0 :(得分:6)

您可以使用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 );

以上额外的行只是为了演示。

答案 1 :(得分:5)

对于双倍,您可以使用像这样的三元运算符

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));

答案 2 :(得分:0)

试试这个......

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

如果您的字符串为null或为空,则不会尝试转换它。它只是0.0或0。