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 !"
W tym przypadku wyświetli się nam drugi Msgbox, gdyż „stringiem ! ” to nie ten sam ciąg znaków co „STRINGIEM !”
if StringInStr($string,"STRINGIEM !",1) >1 then
Msgbox(0,'Test string','zmienna znaleziona !')
else
Msgbox(0,'Test string','Nic nie znalazłem ;-(')
endif
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…