Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.028 c
7-17427
race1
2003-01-06 06:51
2003.03.06
уникальная вещь


7-17425
ShadowFromXZone
2003-01-07 00:37
2003.03.06
Ребята вот какой возник вопрос.... Надо запретить только копирова


7-17415
Alexsandr (GEG)
2003-01-09 10:01
2003.03.06
Как узнать и изменить настройки виндов


1-17143
User
2003-02-21 17:33
2003.03.06
Шифровальшик


7-17407
Palladin
2003-01-07 22:16
2003.03.06
потоки в Dll





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский