如何将字符串拆分为双精度并将其添加到数组C#

时间:2011-08-05 04:31:19

标签: c# regex arrays string split

我有一个像

这样的字符串
"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 个答案:

答案 0 :(得分:12)

double[] doubles = Array.ConvertAll(myDoubles.Split(','), double.Parse);

或使用LINQ

double[] doubles = myDoubles.Split(',').Select(double.Parse).ToArray();

答案 1 :(得分:2)

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

答案 2 :(得分:2)

有几种不同的方式:

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

答案 3 :(得分:1)

您可以使用逗号分隔符拆分字符串,然后使用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());
}