W drugiej i ostatniej części kursu poświęconej obiektowi String zajmiemy się metodami konwertującymi ciągi znaków - rgbToHex, hexToRgb, escapeRegExp, stripScript, substitute, toInt oraz toFloat.

Konwersje kolorów raz jeszcze

Dwie metody obiektu String już mieliśmy okazję poznać przy omawianiu obiektu Array - chodzi o metody hexToRgb i rgbToHex - jak pamiętamy zapis:

["10","AA","FF"].hexToRgb();

Używał metody hexToRgb zawartej w obiekcie Array, ale już zapis postaci:

"10AAFF".hexToRgb();

Używa tej samej metody, ale zawartej w obiekcie String.

W wypadku metody rgbToHex stosujemy zapis postaci:

"rgb(10,20,30)".rgbToHex();

lub:

"rgba(10,20,30,0)".rgbToHex();

Pierwszy zapis to kolor w formacie RGB, a drugi to kolor w formacie RGBA (czyli RGB + kanał alpha). W naszym wypadku ponieważ alpha równa jest 0, zostanie zwrócona wartość transparent.

Oczywiście obie metody podobnie jak w wypadku metod obiektu Array przyjmują jako argument wartość logiczną określającą czy chcemy aby wynik był zwrócony w postaci tablicy czy też w postaci zwykłego ciągu znaków.

Konwersje liczb

Skoro już obracamy się w temacie metod konwertujących to zajmijmy się teraz metodami toInt i toFloat - są to odpowiedniki natywnych parseInt i parseFloat, które służą do zamienienia ciągu znaków na liczbę.

Metody te będziemy często wykorzystywać przy pobieraniu szerokości elementów do różnego rodzaju obliczeń:

"100px".toInt();

Powyższy zapis zwróci nam po prostu liczbę 100. Podobnie jest z metodą toFloat:

"10.25em".toFloat();

Zwróci nam liczbę zmiennoprzecinkową 10.25 .

Warto jeszcze zwrócić uwagę na to, że metoda toInt może pobierać podstawę systemu w jakim zapisana jest liczba i zamieniać rezultat na liczbę w zapisie dziesiętnym. Przykładowo jeżeli mamy liczbę w zapisie binarnym:

"1111".toInt(2);

Powyższy kod zwróci nam liczbę 15, bo jej reprezentacja w systemie dwójkowym to właśnie 1111.

Myślę, że w wypadku tych metod więcej tłumaczyć nie trzeba, bo tak jak wspominałem to po prostu natywne metody pod innymi nazwami i przypisane do innego obiektu natywnego. Oczywiście osoby optymalizujące kod powiedzą, że to nie ma sensu, bo zwykłe parseInt() zadziała tak samo, a różnica jest tylko w zapisie - oczywiście mają rację, ale nikt im metody parseInt używać nie zabrania ;) Wszystko zależy od tego jak bardzo zależy nam na optymalizacji kodu i łatwości zapisu.

Usuwanie kodu JavaScript z tekstu

Czasami mamy ciągi znaków zawierające skrypty - dzięki metodzie stripScripts możemy usunąć kod JS z ciągu znaków lub wykonać tenże kod i otrzymać ciąg znaków bez kodu JS. Oczywiście przykłady wyjaśnią tutaj wszystko najlepiej:

"<script>alert('To jest test...')</script>Tekst bez kodu JS".stripScripts();

W powyższym wypadku zostanie zwrócony ciąg znaków:

Tekst bez kodu JS

Gdybyśmy jednak jako argument metody stripScripts podali wartość true:

"<script>alert('To jest test...')</script>Tekst bez kodu JS".stripScripts(true);

To pojawiłby się alert z tekstem "To jest test..." i dodatkowo zostałby zwrócony przez tą metodę ciąg znaków taki jak w poprzednim przykładzie. Zatem metoda stripScripts może służyć zarówno do wykonywania kodu JS zawartego w tekście, jak i do usuwania tego kodu z ciągu znaków.

Prawie jak system szablonów

Ważną zmianą w kodzie MooTools 1.2 jest dla mnie metoda substitute, która ma podobne działanie jak napisana przeze mnie kiedyś klasa Template dla MooTools 1.11. Składnia tej metody wygląda następująco:

tekst.substitute(obiekt, ograniczniki);

Drugi argument jest opcjonalny - jest to tablica znaków, które ograniczają tekst do podmienienia. Podmiana następuje na bazie właściwości obiektu. Przykładowo:

"To jest {test}".substitute({test:"testowy tekst"});

Gdybyśmy chcieli podmieniać teksty postaci: <?text?> to zapiszemy:

"To jest <?test?>".substitute({test:"testowy tekst"},["<?","?>"]);

Metoda ta może być bardzo przydatna gdy mamy jakieś szablony tekstu, gdzie zmieniają się tylko określone parametry - nie musimy wtedy generować długich kombinacji ciąg znaków - zmienna - ciąg znaków - zmienna - itd. Dzięki temu kod wygląda estetyczniej (przynajmniej według mnie ;) ).

Neutralizowanie wyrażeń regularnych

Każdy kto zetknął się kiedyś z wyrażeniami regularnymi wie, że czasami istnieje potrzeba znalezienia tekstu zawierającego znaki specjalne stosowane w wyrażeniach regularnych - aby zautomatyzować procedurę ich "neutralizowania" poprzez dodania przez każdym takim znakiem znaku backslash stworzono metodę escapeRegExp:

"Tekst.dla.metody{escapeRegExp}".escapeRegExp();

Powyższy kod zwróci nam tekst:

Tekst\.dla\.metody\{escapeRegExp\}

Metoda ta jest niezwykle przydatna wtedy gdy tekst, który umieszczamy w wyrażeniu regularnym jest generowany dynamicznie i nie mamy pewności co się w nim znajdzie.

Podsumowanie

Poznaliśmy już wszystkie metody dodane do obiektu String przez framework MooTools 1.2. W kolejnej części zajmiemy się obiektem natywnym Number.

Komentarze do wpisu "MooTools 1.2 - ciągi znaków cz. 2":

Jeszcze nie ma żadnych komentarzy. Twój może być pierwszy.

Dodaj komentarz:

Textile Lite włączony ( szczegółowy opis znaczników ):
*strong* | # lista numerowana | * lista wypunktowana | _em_ | __italic__ | "link":http:// | bq. cytat.