Как из текстового файла вытащить столбцы цифр типа double ? - C#
Формулировка задачи:
C# Имею текстовый файл, нужно из него вытащить ТОЛЬКО столбцы цифр и занести отдельно в каждый массив. Определение куда занести то или иное число определяется табуляцией пробелами.
Число создаваемых массивов зависит от кол-во столбцов в текством файле, кол-во цифр в каждом столбце изменяется от нового текстового файла
Шапка файла тестовая часть в отдельную строку, а стобцы цифр в отдельные массивы
На данный момент имею только это:
пример, берет файл в котором три столбца и разделят их на три части, но это не то что мне нужно
string[] lines = File.ReadAllLines(@"E:\gg.txt");
string[] one = new string[lines.Length];
string[] two = new string[lines.Length];
string[] tree = new string[lines.Length];
for (int i = 0; i < lines.Length; i++)
{
string[] ns = lines[i].Split(' ');
one[i] = ns[0];
two[i] = ns[1];
tree[i] = ns[2];
}
for (int i = 0; i < one.Length; i++)// a.Length;
{
listBox1.Items.Add(one[i].ToString());
listBox2.Items.Add(two[i].ToString());
listBox3.Items.Add(tree[i].ToString());
}Решение задачи: «Как из текстового файла вытащить столбцы цифр типа double ?»
textual
Листинг программы
static void Main(string[] args)
{
foreach (var ar in GetDoubleValues(@"D:\Downloads\508.las"))
{
foreach (var d in ar)
{
Console.Write("{0,10:f3}", d);
}
Console.WriteLine();
}
Console.Read();
}
static List<double[]> GetDoubleValues(string path)
{
var result = new List<double[]>();
if (!File.Exists(path))
throw new FileNotFoundException(path);
using (var reader = new StreamReader(path))
{
//Поиск строки, после которой начинаются данные
while (!reader.ReadLine().Equals("~A"))
{ }
//Чтение данных
do
{
var line = reader.ReadLine();
//Разбивка строки по пробелам с пропуском пустых элементов
var values = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
//Каждую строку из массива переводим в число
result.Add(values.Select(s => double.Parse(s, CultureInfo.InvariantCulture)).ToArray());
} while (reader.Peek() != -1);
}
return result;
}