我有一个像
这样的字符串"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);
}
答案 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());
}