Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.07.2011, 17:55   #1
kakawkin
Форумчанин
 
Регистрация: 21.09.2009
Сообщений: 431
По умолчанию Удалениеe нескольких букв по маске

Есть строва: http://xxx.com/ или http://www.xxx.com/
Как можно удалить в начале чтобы осталось только xxx.com ?

Так будет правельно ?:
if pos('ttp://',a) then Delete(a,1,7);
if pos('ttp://www.',a) then Delete(a,1,10);
kakawkin вне форума Ответить с цитированием
Старый 26.07.2011, 18:01   #2
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Код:
if pos('http://', Lowercase(a)) then Delete(a,1,7);
if pos('www.', Lowercase(a)) then Delete(a,1,4);
ZuBy вне форума Ответить с цитированием
Старый 26.07.2011, 19:23   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ZuBy, не, не корректно..
1) не проверяете позицию (а если там в начале строки пробелы или другой текст?!

2) если вдруг в имени сайта/страницы найдётся www. - то безжалостно удалиться..
а такие сайты есть.
вот, навскидку:
http://avtoligapezho.www.nn.ru/
https://secure.www.whittierdailynews.com/

я бы предложил такой вариант:
Код:
if pos('http://www.', lowercase(a))>0 then 
   Delete(a, pos('http://www.', lowercase(a)), length('http://www.'));
if pos('http://', lowercase(a))>0 then 
   Delete(a, pos('http://', lowercase(a)), length('http://'));
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.07.2011, 20:25   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

разницы вариантов немного, все равно нет проверки что это все в начале...

примерно так надо:
Код:
str:=Trim(str);
if AnsiLowerCase(Copy(str,1,7))='http://' then Delete(str,1,7);
if AnsiLowerCase(Copy(str,1,4))='www.' then Delete(str,1,4);

Сергей, объясню что меня не устроило в Вашем варианте, неизвестно что ТС нужно обрезать, если там будут GET-запросы, то может обрезаться параметр, а это не думаю что нужно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 26.07.2011 в 20:28.
Пепел Феникса вне форума Ответить с цитированием
Старый 26.07.2011, 22:37   #5
kakawkin
Форумчанин
 
Регистрация: 21.09.2009
Сообщений: 431
По умолчанию

проверка не нужна - сайт будет введен без пробелов.
Т.е. надо тупо избавиться от http:// или же от http://www.
kakawkin вне форума Ответить с цитированием
Старый 26.07.2011, 23:41   #6
kakawkin
Форумчанин
 
Регистрация: 21.09.2009
Сообщений: 431
По умолчанию

Собственно выход нашел вот так:
AnsiReplaceStr(s, 'http://', '');
AnsiReplaceStr(s, 'http://www.', '');
kakawkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск буквы (или нескольких букв) в слове Byurrer Общие вопросы C/C++ 9 09.04.2011 00:10
Подсчитать количество букв "А" в предложении и общее количество букв.В тексте из файла несколько строк. kvas91 Общие вопросы C/C++ 3 14.11.2010 16:51
удаление по маске Сергей 2289 Microsoft Office Excel 0 01.10.2010 10:07
Поиск По маске CoreFox Общие вопросы Delphi 11 21.02.2008 21:48
Замена по маске Drain Общие вопросы Delphi 1 14.02.2008 16:08