Как разбить строку на двойники и добавить их в массив C # - PullRequest
2 голосов
/ 05 августа 2011

У меня есть строка типа

"1.898, -1.456, 233.556, 34546.8"

Как бы я сделал массив парных чисел в C # Должен ли я использовать регулярное выражение или функцию разделения?

Я пытался что-то вроде:

string[] aux = ORIGINALtext.Split(',');
foreach (string val in aux)
{
   double value = double.Parse(val);
   Console.WriteLine(value);

}

Ответы [ 4 ]

12 голосов
/ 05 августа 2011
double[] doubles = Array.ConvertAll(myDoubles.Split(','), double.Parse);

Или используя LINQ

double[] doubles = myDoubles.Split(',').Select(double.Parse).ToArray();
2 голосов
/ 05 августа 2011

Несколько разных способов:

ORIGINALtext.Split(',').Select(s =>
        float.Parse(s, CultureInfo.InvariantCulture));

ORIGINALtext.Split(',').Select(s =>
        Convert.ToDouble(s, CultureInfo.InvariantCulture));

foreach (string s in ORIGINALtext.Split(',')) {
    double x;
    if (double.TryParse(s, NumberStyles.Number,
                        CultureInfo.InvariantCulture, out x)) {
        yield return x;
    }
}

CultureInfo.InvariantCulture заставит компилятор использовать согласованный формат для всех строк страны.(Точка для десятичного разделителя, запятая для разделителя тысяч и т. Д.)

С помощью NumberStyles вы можете контролировать, какие числовые стили вы хотите разрешить (окружающий пробел, числа со знаком, разделитель тысяч и т. Д.).Вы также можете передать его в float.Parse, но не в Convert.ToDouble.

2 голосов
/ 05 августа 2011
string[] str = "1.898, -1.456, 233.556, 34546.8".Split(',');
double[] doubles = new double[str.Length];
for (int i = 0; i < str.Length; i++)
{
    doubles[i] = double.Parse(str[i]);
}
1 голос
/ 05 августа 2011

Вы можете разбить строку, используя разделитель запятых, а затем использовать Double.Parse (), чтобы разбить отдельные строковые элементы на двойные.

var s = "1.898, -1.456, 233.556, 34546.8";
var split = s.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
var doubles = new double[s.Length];
for(var i=0; i < split.Length; i++) {
    doubles[i] = Double.Parse(split[i].Trim());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...