如何在TryParse中使用Split?

时间:2011-09-15 19:29:19

标签: c#

如果用户在文本框中输入一个或多个无效的双打,我宁愿不抛出异常。 这是我想做的事情,但当然是错误的。

double myDouble[];
double.TryParse(textBox1.Text.Split(' '), out myDouble);

5 个答案:

答案 0 :(得分:5)

TryParse()仅尝试解析单个双精度值 - 您无法将其与数组一起使用。您可以尝试查看是否有任何数字无效:

double myDouble;
bool parseFailed = textBox1.Text.Split(' ')
                           .Any( s => !double.TryParse(s, out myDouble));

答案 1 :(得分:3)

怎么样......

var myDoubleList = new List<double>();
foreach(var doubleString in textBox1.Text.Split(' '))
{
    double myDouble;
    if (double.TryParse(doubleString, out myDouble))
        myDoubleList.Add(myDouble);    
}

答案 2 :(得分:2)

首先拆分,然后解析每个值。也许是这样的:

string numbers = "10 20 30 40 50";
int x = 0;
var values = from str in numbers.Split(' ') 
             where int.TryParse(str, out x) 
             select x;

答案 3 :(得分:1)

如果您只想要第一个值,也可以这样做。

double myDouble[];
double.TryParse(textBox1.Text.Split(' ')[0], out myDouble);

答案 4 :(得分:1)

这个(几乎)一个班轮怎么样?

double dbl;
IEnumerable<double> doubles = 
    textBox1.Text.Split(' ')
                 .Select(str => Double.TryParse(str, out dbl) ? dbl : 0.0);

喜欢一个衬垫:)