我已将文件读入c#项目中的变量,并希望将其转换为浮点数数组。
这是txt文件的示例:
SELECT *
FROM (SELECT
id
FROM Table1
WHERE user = 'bob') AS t1
LEFT JOIN Table2 t2
ON t1.id = t2.id
文件包含一个数字,后跟一个空行和另一个数字。
我使用以下代码将文件读入我的项目:
-5.673
10.543
-0.322
10.048
我如何将var numbers = File.ReadAllLines(@"numbers.txt")
转换为float数组?
谢谢
答案 0 :(得分:2)
您可以使用Linq
和float.Parse()
:
var floats = numbers.Where(s => s != String.Empty).Select(s => float.Parse(s, CultureInfo.InvariantCulture)).ToArray();
但是,如果文件中的数据不正确,则会出现异常。要检查值float
是否正确,请使用float.TryParse()
。
答案 1 :(得分:0)
变量var
的类型为String[]
,因此在这种情况下,您可以从数组的偶数位置获取值,然后将其强制转换为float
。
答案 2 :(得分:0)
您的程序应遍历文件中当前存储在numbers
类型的String[]
变量中的每一行,检查该行的值是否为空,如果不是,将其转换为浮点数并将其添加到我们的浮点数数组中。
将所有这些放在一起看起来像这样:
string[] numbers = File.ReadAllLines(@"numbers.txt");
// Create a list we can add the numbers we're parsing to.
List<float> parsedNumbers = new List<float>() ;
for (int i = 0; i < numbers.Length; i++)
{
// Check if the current number is an empty line
if (numbers[i].IsNullOrEmpty())
{
continue;
}
// If not, try to convert the value to a float
if (float.TryParse(numbers[i], out float parsedValue))
{
// If the conversion was successful, add it to the parsed float list
parsedNumbers.Add(parsedValue);
}
}
// Convert the list to an array
float[] floatArray = new float[parsedNumbers.Length];