Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2015, 09:40   #1
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию С# как прочитать текст выборочно

У меня такая структура файла:
Код:
Idata -1.23 2.35 5.32 1.24 Qdata -4.23 5.65 3.12 -2.15
Если я сделаю просто
Код:
string IQdata = File.ReadAllText("IQ.txt");
то получу эту строчку в IQdata, без изменений. А мне надо получить две строчки: Idata и Qdata. Убрать надписи "Idata " и "Qdata ", и оставить лишь:
Цитата:
string Idata = "-1.23 2.35 5.32 1.24";
string Qdata = "-1.23 2.35 5.32 1.24"
Желательно сразу сделать массивы double, а не string. Как это можно все записать?
Krasi вне форума Ответить с цитированием
Старый 05.11.2015, 09:58   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Что-то типа такого:
Код:
string[] data = File.ReadAllText("IQ.txt").Split("Qdata");
double[] IData= data[0].Replace("Idata ","").Split(" ").Select(s=>Convert.ToDouble(s));
double[] QData= data[1].Split(" ").Select(s=>Convert.ToDouble(s));
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.11.2015, 10:09   #3
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

В этой строчке
Код:
string[] data = File.ReadAllText("IQ.txt").Split("Qdata");
выдает
Цитата:
Error 2 Argument 1: cannot convert from 'string' to 'char[]' C:\Users\engineer\Desktop\Step1_bin FFT_v2\LAST_Version_Workable_OFDM_T CP_Scrambler_FileReceiver\Receiver_ Bin_creator_4OFDM_TCP\Bin_creator\F ormM.cs 184 60 Bin_creator
Не понял, как это исправить

Код:
char[] stg = "Qdata".ToCharArray();
            string[] data = File.ReadAllText("IQ.txt").Split(stg);
Пока так
Но тогда во второй строчке я это тоже исправил, а мне написало
Цитата:
Error 1 Cannot implicitly convert type 'System.Collections.Generic.IEnumer able<double>' to 'double[]'. An explicit conversion exists (are you missing a cast?) C:\Users\engineer\Desktop\Step1_bin FFT_v2\LAST_Version_Workable_OFDM_T CP_Scrambler_FileReceiver\Receiver_ Bin_creator_4OFDM_TCP\Bin_creator\F ormM.cs 185 30 Bin_creator
А. и массив строк data получается необычным:
Цитата:
"I"
""
""
""
" 12,07 8,73226 4,252288 -0,1709465...."
""
""
""
" 3 ......"
Всего 10 строчек.

Последний раз редактировалось Krasi; 05.11.2015 в 10:20.
Krasi вне форума Ответить с цитированием
Старый 05.11.2015, 10:21   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну попробуй так:
Код:
string[] data = File.ReadAllText("IQ.txt").Replace("Qdata","#").Split("#");
А вообще однозначного ответа быть не может, пока ты сам файл не предоставишь. Может там какие-то особенности допустимы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.11.2015, 10:36   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
File.ReadAllText("IQ.txt").Split(new[]{"Qdata"},StringSplitOptions.None);
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.11.2015, 10:51   #6
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Я пока воспользовался первым ответом и сделал так:
Код:
string IQdata = File.ReadAllText("IQ.txt");
            IQdata = IQdata.Replace("Idata ", ""); IQdata = IQdata.Replace("Qdata ", "");
            string[] IQdatas = IQdata.Split(' ');
            double[] Idata = new double[(IQdatas.Length-1)/2];
            double[] Qdata = new double[(IQdatas.Length-1)/2];
           
            for (int i = 0; i < IQdatas.Length-1; i++)
            {
                if (i<=1023)    Idata[i] = double.Parse(IQdatas[i]);
                if (i > 1023)   Qdata[i-1024] = double.Parse(IQdatas[i]);
            }
Krasi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как выборочно суммировать значения, что бы получилась нужная сумма shut1924 Microsoft Office Excel 32 20.09.2019 07:24
Помогите программно прочитать текст из ShowMessage _Casper_ Общие вопросы Delphi 16 24.08.2015 21:03
Как прочитать текст с статус бара чужой программы? fevz Win Api 1 09.03.2012 17:44
Прочитать под текст Хайдом HellMercenariess Свободное общение 6 22.08.2009 15:12
Прочитать текст из Word'а NeBrit Microsoft Office Word 2 09.12.2007 12:48