Форум: "Основная";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];
ВнизПредложите алгоритм Найти похожие ветки
← →
Ra-BOT:Nick (2003-02-21 12:25) [0]У меня есть много файлов *.htm. В каждом нужно найти строчку r.php?100 и заменить на 100.htm. То есть, изменяется номер, в общем виде это выглядит так r.php?<n> -> <n>.htm. Как это можно сделать, чтоб пройтись по всем файлам и сделать такую замену?
Спасибо за любые идеи.
← →
Palladin (2003-02-21 12:37) [1]
FileList, // список файлов
dataProceed:TStringList;
for i:=0 to FileList.Count-1 do
begin
dataProceed.LoadFromFile(FileList[i]);
StringReplace(dataProceed.Text,"r.php?","",[rfReplaceAll,rfIgnoreCase]);
dataProceed.SaveToFile(FileList[i]);
end;
← →
Palladin (2003-02-21 12:40) [2]упс
заметил что r.php?n без .htm
← →
Palladin (2003-02-21 12:53) [3]
procedure _Proceed(var s:string);
var
p,p2:integer;
begin
while true do
begin
p:=pos("r.php?",s);
if p=0 then break;
p2:=p+7;
while s[p2] in ["0","1","2","3","4","5","6","7","8","9"] do inc(p2);
s:=copy(s,1,p-1)+copy(s,p+6,p2-7-p)+".htm"+copy(s,p2,length(s));
end;
end;
подставь в предыдущий код вместо
строки со StringReplace
строку
_Proceed(dataProceed.Text);
← →
Ra-BOT:Nick (2003-02-21 13:00) [4]in ["0","1","2","3","4","5","6","7","8","9"] эквивалентно
Numbers:set of ("0".."9");
while s[p2] in Numbers ...
← →
Palladin (2003-02-21 13:02) [5]можно и так...
← →
Ra-BOT:Nick (2003-02-21 13:04) [6]2Palladin © (21.02.03 13:02)
_Proceed(dataProceed.Text);
Error: Constant object cannot be passed as var parameter
← →
Palladin (2003-02-21 13:07) [7]s:string;
s:=dataProceed.text;
_Proceed(s);
dataProceed.text:=s;
← →
Ra-BOT:Nick (2003-02-21 13:09) [8]2Palladin © (21.02.03 13:07)
и ещё вроде конструктор нужен для TStringList...
← →
Ra-BOT:Nick (2003-02-21 13:14) [9]и замена не так делается: r.php?100 -> .htm100
← →
Palladin (2003-02-21 13:14) [10]ну :)
я же алгоритм привел...
остальным то сам наверно сможешь обвешать...
← →
Ra-BOT:Nick (2003-02-21 13:20) [11]да, это я прогнал, когда использовал
Numbers:set of ("0".."9");
while s[p2] in Numbers ...
и это не сработало...
Вообщем, спасибо
← →
Palladin (2003-02-21 13:22) [12]заменяет все верно...
только цифру 7 на 6 надо исправить
из
s:=copy(s,1,p-1)+copy(s,p+6,p2-7-p)+".htm"+copy(s,p2,length(s));
в
s:=copy(s,1,p-1)+copy(s,p+6,p2-6-p)+".htm"+copy(s,p2,length(s));
← →
guest (2003-02-22 09:31) [13]perl -pi.orig -e "s/r\.php\?(\d+)/\1\.htm/g" file.htm
Просто и без наворотов. Pascal - не лучший инструмент для таких задач.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c