Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Поиск и замена строк...


Автор: Borland_Delphi_6 14.5.2004, 18:26
Есть html файл, в котором постоянно встречаются строки типа "http://host.ru", их необходимо заменить на строку "http://myhost.ru". Как такое можно сделать? sad.gif

Автор: <Spawn> 14.5.2004, 18:34
Запихиваешь файл в TStringList, затем делаешь цикл, где не каждой итерации юзаешь StringReplace

Автор: Vit 14.5.2004, 18:49
Код
with TStringList.create do
 try
    LoadFromFile('C:\MyFile.html');
    text:=StringReplace(text, 'http://host.ru','http://myhost.ru', [rfReplaceAll]);
    SaveToFile('C:\MyFile.html');
 finally
   free;
 end;

Автор: Borland_Delphi_6 14.5.2004, 20:48
Vit
Спасибо, то что нужно! thumbs-up.gif

Автор: CacheY 10.6.2005, 15:40
ктонибуть может объяснить, как реализовать многострочную замену текста в Memo?
и какие параметры у функции StringReplace нужно использовать?

Автор: Негодяй 10.6.2005, 15:51
Цитата(CacheY @ 10.6.2005, 15:40)
многострочную замену текста в Memo

У Memo должно быть свойтво Strings. И делаешь тоже самое что и в предудущих ответах было написано.

Автор: CacheY 10.6.2005, 20:58
Цитата
Цитата(CacheY @ 10.6.2005, 15:40)
многострочную замену текста в Memo

У Memo должно быть свойтво Strings. И делаешь тоже самое что и в предудущих ответах было написано.

хм... чтото не пойму, что именно нужно сделать...
как бы феня в чем - пишу текстовый редактор, текст вешается на Memo, надо сделать многострочную замену текста, тоесть чтобы можно было искать и заменять текст не по одной строчке, а по нескольку строк

Автор: Vit 10.6.2005, 21:47
Memo1.text:=StringReplace(memo1.text, 'строка1','строка2', [rfReplaceAll]);


Вообще есть такой чудный пакет компонентов SynEdit - там очень продвинутое мемо которое имеет очень мощные возможности для поиска и замены с множеством опций, в плодь до регулярных выражений.

Автор: CacheY 10.6.2005, 22:07
Цитата(Vit @ 10.6.2005, 21:47)
Memo1.text:=StringReplace(memo1.text, 'строка1','строка2', [rfReplaceAll]);


Вообще есть такой чудный пакет компонентов SynEdit - там очень продвинутое мемо которое имеет очень мощные возможности для поиска и замены с множеством опций, в плодь до регулярных выражений.

а что такое memo1.text, тот что в скобках...?

Автор: Poseidon 11.6.2005, 02:05
Цитата(CacheY @ 10.6.2005, 22:07)
а что такое memo1.text, тот что в скобках...?
Текст, в катором ты хочешь сделать замену 'строка1' на 'строка2'. Результатом функции будет текст, с уже замененными участками, каторый передается обратно в Мемо.

Автор: Akella 11.6.2005, 08:27
Код

StringReplace(где искать, старое значение, новое значение, [rfReplaceAll, rfIgnoreCase]);

rfReplaceAll - заменять по всему тексту (первый параметр)
rfIgnoreCase - не учитывать регистр символов

Добавлено @ 08:28
Цитата из справки
Цитата

TReplaceFlags indicates how to perform a search-and-replace operation

Unit

SysUtils

Delphi syntax:

type TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase);

C++ syntax:

enum SysUtils__93 { rfReplaceAll, rfIgnoreCase };

typedef Set<SysUtils__93, rfReplaceAll, rfIgnoreCase>  TReplaceFlags;

Description

TReplaceFlags is a set of flags that govern how to locate and replace a substring within a string. This set can contain the following values:

Value Meaning

rfReplaceAll Replace all occurrences. If this flag is not present, only the first occurrence of the target substring is replaced.
rfIgnoreCase Match occurrences of the substring case-insensitively. If this flag is not present, only case-sensitive matches are considered.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)