如何将txt文件转换为浮点数组(在c#中)?

时间:2019-04-19 10:14:23

标签: c# arrays type-conversion

我已将文件读入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数组?

谢谢

3 个答案:

答案 0 :(得分:2)

您可以使用Linqfloat.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];