Разобрать несколько двойных строк из строки в C # - PullRequest
3 голосов
/ 10 сентября 2009

У меня есть строка, которая содержит известное количество двойных значений. Какой самый чистый способ (через 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"

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

Спасибо за любые указатели.

Ответы [ 3 ]

18 голосов
/ 10 сентября 2009
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];

или

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]);
4 голосов
/ 10 сентября 2009

Вы можете использовать String.Split ('', StringSplitOptions.RemoveEmptyEntries), чтобы разделить его на "отдельные значения". Тогда это прямой Double.Parse (или TryParse)

0 голосов
/ 10 сентября 2009
foreach( Match m in Regex.Matches(inputString, @"[-+]?\d+(?:\.\d+)?") )
    DoSomething(m.Value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...