Poradnik Autoit – Stringi cz.I

Stringami nazywamy zmienne, które zawierają ciag znaków. Jako, że temat wykorzystywania stringów jest dość obszerny zamierzam podzielić tę lekcję na kilka części.

Deklarowanie stringów w Autoit jest uproszczone i sprowadza się jedynie do umieszczenia go w cudzysłowiu np.
$string = "Hurra, jestem stringiem !"

Na początku warto zaznajomić się z wbudowaną w Au3 funkcją które niejednokrotnie będzie nam ratowało tyłek a mianowicie IsString($string)

Ta prosta funkcja zwraca wartość 1 jeżeli zmienna jest ciągiem, jeżeli nie otrzymamy wartość 0

$string = "Hurra, jestem stringiem !"
if IsString($string) =1 then
Msgbox(0,'Test string','zmienna jest stringiem'
else
Msgbox(0,'Test string','zmienna nie jest stringiem'
endif

Zalecam stosowanie takiego warunku niemal wszędzie – w ten sposób unikniemy wykrzaczania się skryptu z byle powodu.

Podstwowe operacje na stringach:
StringInStr ( "string", "to co chcemy szukać" [, casesense = 0 , occurrence = 1 , start = 1 , count] )

Polecenie sprawdza, czy w podanym ciągu string istnieje ciąg „to co chcemy szukać”. Jeżeli StringinStr znajdzie szukany ciąg zwróci jego pozycję, jeżeli mu się nie powiedzie – zwróci 0.

dodatkowe parametry:

casesense – określa czy brać pod uwagę stringi pisane małymi oraz wielkimi literami. Wybranie parametru z wartością 0 spowoduje, że StringinStr nie będzie zwracał na to uwagi:
$string = "Hurra, jestem stringiem !"
if StringInStr($string,"STRINGIEM !") >1 then
Msgbox(0,'Test string','zmienna znaleziona !')
else
Msgbox(0,'Test string','Nic nie znalazłem ;-(')
endif

Natomiast, jeżeli zmienimy skrypt tak, by był wrażliwy na rozmiar liter:
$string = "Hurra, jestem stringiem !"
if StringInStr($string,"STRINGIEM !",1) >1 then
Msgbox(0,'Test string','zmienna znaleziona !')
else
Msgbox(0,'Test string','Nic nie znalazłem ;-(')
endif
W tym przypadku wyświetli się nam drugi Msgbox, gdyż „stringiem ! ”  to nie ten sam ciąg znaków co „STRINGIEM !”

Wybranie wartości 2 w tym parametrze powoduje, że StrinInStr nie rozróżnia wielkości liter i używa szybszego porównywania ciągów.

occurence – określa które powtórzenie szukanego ciągu zwrócić (przydatne, gdy szukany ciąg znaków występuje w stringu więcej niż raz), domyślną wartością jest 1 (pierwsze wystąpienie). Jeżeli zachodzi potrzeba szukania ciągu w kolejności od ‚tyłu’ podajemy tutaj -1.

start – w ten sposób wybieramy od którego znaku zaczynamy poszukiwania naszego ciagu.

Funkcja StringIsDigit ( „string” ) sprawdza, czy nasz ciąg zawiera tylko cyfry (zwracając 1 jak test zakończy się powodzeniem, 0 jeżeli nie). Jej bliźniacze  i równie przydatne funkcje to

StringIsASCII ( „string” ) – sprawdza, czy w ciągu występują jedynie znaki ASCII – wyłącznie z przedziału 0x00 – 0x7f (0 – 127).
StringIsSpace ( „string” ) – sprawdza, czy w ciągu występują wyłącznie spacje.
StringIsUpper ( „string” )  – testuje, czy w ciągu występują wyłącznie wielkie litery.
StringIsLower ( „string” ) – j.w, w tym przypadku sprawdza małe litery.

StringLen ( „string” ) – zwraca długość ciągu.

StringStripWS ( „string”, parametr ) – z tego polecenia będziemy korzystać, gdy znaki niedrukowane (spacje, tabulatory oraz przejścia do nowych linii) będą uniemożliwiać wydobycie niezbędnych dla nas informacji (przydatne szczególnie przy korzystaniu z _StringBetween, o którym będzie jeszcze sporo informacji…)  W przypadku StringStripWS nie będę rozpisywał się nad parametrami tego polecenia  gdyż i tak będziemy korzystać tylko z wartości 8 – usuwającej wszystkie niedrukowane znaki.

 StringReplace ( „string”, „co szukać”, „na co zamienić” [, occurrence = 0 [, casesense = 0]] ) – bardzo przydatne polecenie w działaniu podobne do „Znajdź i zamień” znanego z edytorów tekstów. Inaczej mówiąc StringReplace, odnajduje ciąg i podmienia go na coś innego. Parametry opcjonalne occurrence oraz casesense są identyczne jak w przypadku StrinInStr

StringReverse ( „string”) – zwraca ciąg zapisany od prawej do lewej.

StringTrimLeft ( „string”, wartość) oraz StringTrimRight ( „string”, wartość) – przycina ciąg o wybraną ilość znaków począwszy od lewej/prawej.

StringLower ( „string” ) oraz StringUpper ( „string” ) to kolejne bliźniaki w naszym poradniku, tym razem przekształcają duże litery na małe i vice versa.

To by było na tyle w temacie podstawowych operacji, następnym razem zajmiemy się funkcjami dostępnymi w UDF’ie String.au3.
Na zakończenie poradnika przytoczę rozmowę, jaka  odbyła się pomiędzy mną (J) a znajomą koleżanką (K):

Dzwoni telefon, odbieram.
K – co porabasz ?
J – Szukam stringów
K – Co ? aaa no dobra…

Dodaj komentarz