Работа со строками [Функции]

Предисловие:
Довайте с вами рассмотрим основные функции для работы со строками, вообще в свободное время мне
нравиться помудиться со строками- пропарсить какойлибо сайт и тд: наша цель, пропарсить сайт
_http://myip.ru и добыть наш ип в удобной форме x) Хотя легче конечно залезть на сам сайт и посмотреть
НО представим что ип нам нужно вывести в своей проге или отправить на мыло- конечно узнать ип можно
поразному, но мы выберем именно этот способ

Наконец-то расшифрована звукозапись первого полета в космос Ю.Гагарина:
Эй... Куда вы меня тащите...Эээ... Вы что?... Что это за хреновина? У вас что у всех крыши ПОЕХАЛИ...
Вот и мы...

Поехали
Наши строковые функции:


Length(Str: String)   
SetLength(Str: String; NewLength: Integer)   
Pos(SubStr, Str: String)   
PosEx(SubStr, Str: String; Offset: Integer)   
Delete(Str: String; Start, Length: Integer)    
Copy(Str: String; Start, Length: Integer)    
LowerCase(Str: String)    
UpperCase(Str: String)    
AnsiReplaceStr(Str, FromText, ToText: String)    
AnsiReplaceText(Str, FromText, ToText: String)   
ReverseString(Str: String)    
AnsiReverseString(Str: AnsiString)    
DupeString(Str: String; Count: Integer)  

Для выполнения поставленной задачи "Добыть IP" нам потребуються не все из них- но всё же рассмотрим
их все. Так- начнём попорядку:


//////LENGTH//////   
Length(Str: String)  

Дання функция возврощает колличество символов в строке.
Пример:


len:=length('hallо world')   

дання строка возвратит нам число 11, как видим значение которое вернула функция поместиться в
переменную len, для примера- чтобы посмотреть результат напишем showmessage(len);


len:=length('hellо world');   
showmessage(len);   
--- 
Результат "11" 
---



//////SetLength//////   
SetLength(Str: String; NewLength: Integer)   

Данная функция "Обрезает" строку, тут как мы видим два входных параметра- 1 аргумент должен содержать строку над которой работать а второй это насколько символов сделать ограничение.
Пример:


len:='строка для примера';   
len:=setlength(len,6);   
showmessage(str);   
--- 
Результат "строка" 
---



//////Pos//////   
Pos(SubStr, Str: String)   

Данная функция ищет вхождение подстроки
Пример:


len:='login@mail.ru';   
num:=pos('@', len);  
showmessage(inttostr(num));   
--- 
Результат "6" 
---



//////PosEx//////   
PosEx
(SubStr, Str: String; Offset: Integer) [/DELPHI]
Для того чтобы работать с этой функцией подключети в uses "StrUtils".
Данная фукнция аналогична функции Pos с той лишь разницей что можно указать отступ, тобиш с какого
символа будет начат поиск подстроки
Пример:


len1:='Что за тупая функция';   
len2:='тупая';  
num1:=PosEx(len2, len1, 2);   
num1:=PosEx(len2, len1, 3);  
showmessage(inttostr(P1));   
showmessage(inttostr(P2));   
--- 
Результат "3" и "4" 
---



//////Delete//////   
Delete(Str: String; Start, Length: Integer)   

Функция удаляет часть строки...
Пример:


len:='Дарова Ping0, опять нажрался?';   
Delete(len, 13, 17);   
showmessage(len);  
--- 
Результат "Дарова Ping0" 
---



//////Copy////// Copy(Str: String; Start, Length: Integer)   

Данная функция копирует часть строки
Пример:


len:='Дарова Ping0, опять нажрался?';   
len:=copy(len, 15, 15);   
showmessage(len);   
--- 
Результат "опять нажрался?" 
---



//////LowerCase//////   
LowerCase(Str: String)   

Данная функция преобразует строку в нижний регистор
Пример:


len:=lowercase'I HeKeR pOetOmU nEpishU ZaborChiKoM';   
showmessage(len);   
--- 
Результат "i heker poetomu nepishu zaborchikom" 
---


жаль что данная функци я никак нереагирует на русские буквы =(


//////UpperCase//////   
UpperCase(Str: String)   

Данная функция аналогично функции LowerCase с той лиш разницей что преобразует текст в верхний
регистор, думаю приводить пример ненадо )


//////AnsiReplaceStr//////   
AnsiReplaceStr(Str, FromText, ToText: String)   

Опять же чтобы работала данная функция нцжно подключить в uses "StrUtils".
Пример:


len:='Всем Привет';   
len2:=AnsiReplaceStr(Str1, 'Привет', 'пока');   
showmessage(str2)   
--- 
Результат "Всем пока" 
---



//////AnsiReplaceText//////   
AnsiReplaceText(Str, FromText, ToText: String)   

Опять же незабываем подключить в uses "StrUtils".
Функция аналогична предыдущий функции "AnsiReplaceStr" с той лишь разницей что она независима от регистра.
Пример:


len:='Всем Привет';   
len2:=AnsiReplaceStr(Str1, 'ПриВеТ', 'пока');   
showmessage(str2)   
--- 
Результат "Всем пока" 
---



//////ReverseString//////   
ReverseString(Str: String)   

Незабываем подключить в uses "StrUtils".
Функция моя самая любимая ) Она позволяет перевернуть строку
Пример:


len:='Всем привет';   
len:=reversestring(len);   
showmessage(len)   
--- 
Результат "акоп месВ" 
---



//////AnsiReverseString//////   
AnsiReverseString(Str: AnsiString)   

Аналогична функции ReverseString


//////DupeString//////   

DupeString(Str: String; Count: Integer)
Интересная функция однако, копирует строку столько раз сколько указанно в аргументе Count
Пример:


len:='Всем привет';   
len:=dupestring(len,5);   
showmessage(len)   
--- 
Результат "Всем приветВсем приветВсем приветВсем приветВсем привет" 
---


С функциями всё- теперь довайте для приличия всёже получим этот ИП "млять, только теперь я понимаю-
что этот долбанный ип нестоил столько моего времени, которое я потратил на написание статьи )"
Кидаем на форму IdHTTP, Memo и Button
и в обработчие собития OnClick у кнопки, пишем:
Код:


var len:string; num:integer;   
begin memo1.text:=idhttp1.get('http://www.myi p.ru/get_ip.php');  
len:=memo1.text;   
num:=pos('<TD bgcolor=white align=center v align=middle>',len) +45;   
delete(len,1,num);   
len:=copy(memo1.text, num, pos('<',len)) ;   
memo1.Text:=len;   

Жмёте кнопку и получаете ип..
Ну вот впринципе и всё!
Всем спасибо за внимание- надеюсь кому пригодиться
Теги:
строка
Добавлено: 07 Августа 2018 21:09:45 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...