#c# #arrays #type-conversion
#c# #массивы #преобразование типов
Вопрос:
Я прочитал файл в переменную в своем проекте на c # и хочу преобразовать его в массив с плавающей запятой.
Вот пример текстового файла:
-5.673
10.543
-0.322
10.048
Файл содержит число, за которым следует пустая строка и другое число.
Я использовал следующий код для чтения файла в свой проект:
var numbers = File.ReadAllLines(@"numbers.txt")
Как мне преобразовать numbers
в массив с плавающей запятой?
Спасибо
Ответ №1:
Вы можете использовать Linq
и float.Parse()
:
var floats = numbers.Where(s => s != String.Empty).Select(s => float.Parse(s, CultureInfo.InvariantCulture)).ToArray();
Но если у вас неверные данные в файле, вы получите исключение. Чтобы проверить, правильно ли задано значение float
, используйте float.TryParse()
.
Ответ №2:
Тип переменной var
таков String[]
, что в этом случае вы можете получить значения из четных позиций массива, а затем преобразовать в float
.
Ответ №3:
Ваша программа должна перебирать каждую строку в файле, которые в данный момент хранятся в 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];