C# 在C中解析字符串中的多个double

C# 在C中解析字符串中的多个double,c#,text,parsing,C#,Text,Parsing,我有一个字符串,其中包含已知数量的双精度值。通过C解析字符串并将结果插入匹配的标量变量的最干净的方法是什么。基本上,我想做这个sscanf语句的等价物,但在C中: sscanf( textBuff, "%lg %lg %lg %lg %lg %lg", &X, &Y, &Z, &I, &J, &K ); 。。。假设textBuff可能包含以下内容: "-1.123 4.234 34.12 126.4 99 22" 。。。每个

我有一个字符串,其中包含已知数量的双精度值。通过C解析字符串并将结果插入匹配的标量变量的最干净的方法是什么。基本上,我想做这个sscanf语句的等价物,但在C中:

sscanf( textBuff, "%lg %lg %lg %lg %lg %lg", &X, &Y, &Z, &I, &J, &K );
。。。假设textBuff可能包含以下内容:

"-1.123 4.234 34.12 126.4 99 22" 。。。每个值之间的空格字符数可能会有所不同


感谢您提供的任何指针。

您可以使用String.Split''、StringSplitOptions.removeMptyEntries将其拆分为单个值。然后是一个直接的双精度。Parse或TryParse

string textBuff = "-1.123    4.234  34.12  126.4  99      22";

double[] result = textBuff
    .Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
    .Select(s => double.Parse(s))
    .ToArray();

double x = result[0];
//    ...
double k = result[5];


我想你需要一个lambda来做这个选择。Selectx=>double.Parsex应该可以工作。@Ty-显示的代码可以工作。lamba可以与方法组本身交换。@Drew:Ty是正确的。方法的类型参数…选择。。。无法从用法推断。尝试显式指定类型参数。我已经解决了这个问题。第一个选项刚才确实从我自己的代码中删去了很多内容。谢谢dtb。Ty是绝对正确的。问题的答案被转移到DoSomething,它不会接受1E6等。
string textBuff = "-1.123    4.234  34.12  126.4  99      22";

string[] result = textBuff
    .Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

double x = double.Parse(result[0]);
//    ...
double k = double.Parse(result[5]);
foreach( Match m in Regex.Matches(inputString, @"[-+]?\d+(?:\.\d+)?") )
    DoSomething(m.Value);