Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.02.2010, 19:36
Cracer Cracer вне форума
Прохожий
 
Регистрация: 28.12.2008
Сообщения: 33
Репутация: 10
Смущение Парсинг текста..

Доброго времени суток уважаемые Нужна помощь вот с чем:
Имеется: Некий большой текст со строками вида:
Код:
999, Text1, 0, -2303.41, 2002.48, 9.2, 0, 0, 0, 1, -1
Задача: загрузить текстовый файл в программу, и привести каждую строку в файле к виду:
Код:
999, -2303.41, 2002.48, 9.2, 0, 0, 0
Тоесть фактически убрать 2 блока текста (две запятых и текст) после первой запятой, и все что есть после 9ой запятой включая ее саму...
Может быть кто нибудь занимался созданием чего то подобного и может помочь исходником или набросает пример
Ответить с цитированием
  #2  
Старый 08.02.2010, 19:44
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, если не гнаться за производительностью, то можно так:

Код:
function ProcessStr(S : String) : String;
var
  L : TStringList;
begin
  L := TStringList.Create;
  Try
    // Бъем по запятым
    L.Text := StringReplace(S,',',#13#10,[rfReplaceAll]);
    
    While L.Count > 9 Do L.Delete(L.Count-1); // Удаляем все, после 9ой
    L.Delete(1); L.Delete(1); // Удаляем 2 блока
    
    // Собираем результат
    Result := '';
    For I := 0 To L.Count-1 Do
      Begin
        If Result <> '' Then Result := Result + ', ';
        Result := Result + Trim(L[i]);
      End;
  Finally
    L.Free;
  End;
end;
Ответить с цитированием
  #3  
Старый 08.02.2010, 21:59
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Цитата:
Сообщение от lmikle
Ну, если не гнаться за производительностью, то можно так:

Ха, как я понимаю, данное решение только для заданного выражения, именно:
Код:
999, Text1, 0, -2303.41, 2002.48, 9.2, 0, 0, 0, 1, -1

но автор вопроса, говорил о неком "большом" тексте, примерного вида..,
соответственно этот алгоритм, врятли ему поможет,
так же, как я понимаю, автор неадекватно написал и само задание, суть алгоритма откидывания текста, остается загадкой)
Ответить с цитированием
  #4  
Старый 08.02.2010, 22:35
Аватар для movnet
movnet movnet вне форума
Начинающий
 
Регистрация: 24.07.2008
Сообщения: 127
Версия Delphi: Delphi 7
Репутация: 23
Радость

Код:
var t:TStringList;
begin
 t:=TStringList.create; //создаём класс
 t.text:=stringReplace('999, Text1, 0, -2303.41, 2002.48, 9.2, 0, 0, 0, 1, -1',',',#13#10,[rfReplaceAll]);//заменяем все запятые на символы конца троки //теперь можно убедится что у вас строка разбита на элементы:
 showmessage(t[0]);
 showmessage(t[1]);
 showmessage(t[2]);
 showmessage(t[3]);
 ...
 //после работы надо уничтожить класс
FreeAndNill(t);
Admin: Напоминаю про теги!

Последний раз редактировалось Admin, 09.02.2010 в 10:17.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:11.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025