Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Замена в теекстовом файле 
:(
    Опции темы
Metalist
  Дата 7.7.2006, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 2.3.2003

Репутация: нет
Всего: нет



Имеется текстовый файл в котором нужно произвести замену подстрок в строках
т.е. примерно так

0. Открыть файл
1. Считать строку
2.1. Найти в строке подстроку "Vasya"
2.1.1. Заменить ее на подстроку "Вася"
....(Искомых подстрок может быть несколько и каждой соответсвует своя новая подстрока)
2.n. Найти в строке подстроку "Pupkin"
2.n.1. Заменить ее на подстроку "Пупкин"
....
3. Считать следующую строку
4. И так до конца файла
5. Сохранить файл с изменениями

Никак не могу придумать алгоритм - ПОМОГИТЕ !!!


 
PM MAIL ICQ   Вверх
Poseidon
Дата 7.7.2006, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Код

StringReplace(Stroka, 'Vasya', 'Вася', [rfReplaceAll]);
StringReplace(Stroka, 'Pupkin', 'Пупкин', [rfReplaceAll]);

 


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Alexeis
Дата 7.7.2006, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Metalist, из транслита сделать руские буквы чтоли? 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Poseidon
Дата 7.7.2006, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



В Stroka весь текст файла 


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
volvo877
Дата 7.7.2006, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 14
Всего: 116



Цитата(Metalist @  7.7.2006,  16:55 Найти цитируемый пост)
Никак не могу придумать алгоритм

Ты как раз алгоритм и придумал... Осталось реализовать...

Код
var
  sl: tstringlist;
  i: integer;

begin
  sl := tstringlist.create;
  sl.loadfromfile('1.txt');
  for i := 0 to pred(sl.count) do begin
    // Ну, тут замени по желанию... Первое слово - ЧТО меняешь, второе - НА ЧТО...
    sl[i] := stringreplace(sl[i], 'vasya', 'VASYA', [rfReplaceAll]);
    sl[i] := stringreplace(sl[i], 'vova', 'Vovan', [rfReplaceAll]);
  end;
  sl.savetofile('1.txt');
  sl.free;
end.

  

Это сообщение отредактировал(а) volvo877 - 7.7.2006, 17:13
PM MAIL   Вверх
Metalist
Дата 7.7.2006, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 2.3.2003

Репутация: нет
Всего: нет



Цитата(alexeis1 @ 7.7.2006,  09:09)
Metalist, из транслита сделать руские буквы чтоли?

НЕТ, это я так для примера =)

Добавлено @ 17:16 
Спасибо за ответы буду разбирать  smile  
PM MAIL ICQ   Вверх
Poseidon
Дата 7.7.2006, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



volvo877, ужас! Я бы твой код переписал вот так:

Код
var
  sl: tstringlist;
  i: integer;
begin
  sl := tstringlist.create;
  sl.loadfromfile('1.txt');
    // Ну, тут замени по желанию... Первое слово - ЧТО меняешь, второе - НА ЧТО...
    sl.Text := stringreplace(sl.Text, 'vasya', 'VASYA', [rfReplaceAll]);
    sl.Text := stringreplace(sl.Text, 'vova', 'Vovan', [rfReplaceAll]);

  sl.savetofile('1.txt');
  sl.free;
end.


Тут правильнее опираться не на приведенный алгоритм, а на постановку задачи: 
Цитата(Metalist @  7.7.2006,  16:55 Найти цитируемый пост)
Имеется текстовый файл в котором нужно произвести замену подстрок в строках
 т.к. приведенный алгоритм тоже не идеален. smile
 


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Alexeis
Дата 7.7.2006, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Poseidon, код volvo877 будет работать намного быстрее!  

Это сообщение отредактировал(а) alexeis1 - 7.7.2006, 17:26


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Poseidon
Дата 7.7.2006, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Согласен. Но это будет заметно только при работе с ОГРОМНЫМИ файлами 


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0548 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.