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

本文关键字:添加 数组 双精度 字符串 拆分 | 更新日期: 2023-09-27 18:04:29

我有一个字符串像

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

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

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

或者使用LINQ

double[] doubles = myDoubles.Split(',').Select(double.Parse).ToArray();
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]);
}

几种不同的方法:

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

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