Strona główna kursu

JavaScript - sprawdzanie ciągów znakowych, ciągi znakowe

DZIAŁANIE:

Sprawdzanie maile (indexof, lastindexof)

E-mail :

Sprawdzanie niedozwolonych znaków (indexof, chartAt)

E-mail :

Sprawdzanie nazwy użytkownika (substring)

E-mail :

Sprawdzanie daty ( split )

Data (mm/dd/rr) :
 

Kod:

Kurs JavaScript, Kurs Ajax, Kurs PHP

Ewentualne Objaśnienia:

Sprawdzenie poprawności adresu e-mail mieliśmy poprzez wyrażenie regularne w przykładzie 32form_praktyczne_prz.html . Tutaj mamy również podobne zadanie zrealizowane poprzez JS jednak za pomocą innych narzędzi związanych z obsługą ciągów tekstowych. Jak sami sprawdzicie nie jest to wcale dobre rozwiązanie. Zaprezentowałem tutaj kilka przykładów w celu pokazania działania kilku funkcji JS związanych z obsługą ciągów znakowych. Mimo wszystko podkreślam, że wyrażenia regularne to dużo lepsze i potężniejsze narzędzie :-)

1.Sprawdzenie maila - funkcje indexOf oraz lastIndexOf
Funkcja indexOf już ją pokazywałem, sprawdzamy nią czy dany ciąg (zmienna) zawiera inny ciąg czy też znak. Jeśli nie zawiera zwróci wartość -1, jeśli zawiera zwróci nr znaku. Na przykład jeśli sprawdzimy czy tekst "kalafior" zawiera literkę "f" otrzymamy wynik 4 (5 pozycja słowa kalafior). Metoda lastIndexOf działa bardzo podobnie jednak zwraca ostatnie wystąpienie szukanego ciągu/znaku.  Na przykład dla 'kalafior' dla literki 'a' zostało by zwrócone 3, bo ostatnia literka 'a' znajduje się na 3 pozycji (4znak) w słowie 'kalafior'.
Na tych dwóch funkcjach opiera się nasza pierwsza funkcja :
- sprawdzamy położenie znaku @, ostatniej kropki oraz spacji
- email jest zły gdy :
    - nie ma małpy
    - małpa jest na początku (położenie 0)
    - nie ma kropki
    - ostatnia kropka jest zaraz za małpą
    - po ostatniej kropce nie ma żadnego znaku
    - występuje spacja
- jeśli powyższe warunki nie są spełnione (pierwszy if) e-mail jest (teoretycznie) poprawny, w przeciwnym razie jest zły .

2.Sprawdzanie niedozwolonych znaków - funkcja chartAt
Funkcja chartAt zwraca nam znak, który jest położony na danej pozycji w ciągu. Na przykład zapis (zmienna slowo = "makaron") slowo.chartAt(2) zwróci nam 'k' . No i tak tutaj nasza funkcja jako parametry przyjmuje ciąg, który sprawdzamy oraz ciąg, który zawiera niedozwolone znaki (ja tutaj podałem kilka takich znaków).
- robimy pętle po wszystkich niedozwolonych znakach
- do zmiennej znak przypisujemy dany niedozwolony znak
- sprawdzamy poprze indexOf czy nasz testowany ciąg zawiera taki znak, jeśli zawiera dopisujemy taki znak do zmiennej info
- na końcu sprawdzamy czy zmienna info zawiera jest pusta. Jeśli tak to przeszukiwany ciąg nie zawierał żadnego złego znaku, jeśli nie tzn., że zawierał

3.Określanie nazwy użytkownika z podanego e-mail'a - funkcja substring
Funkcja substring pobiera nie tylko jeden znak tak jak chartAt, ale daje możliwość pobrania wielu znaków z danego ciągu. Jako parametry podajemy, od którego znaku ma zacząć pobierać oraz ostatni znak (na którym ma zakończyć, ale jego nie dodaje do zwracanego ciągu). Na przykład dla zmiennej slowo = "komputer" zapis slowo.substring(0,4) zwróciłby słowo 'komp' .
Na tej funkcji właśnie opiera się nasza funkcja pokazująca (wyciągająca) nazwę użytkownika z danego maila :
- sprawdzamy czy w ogóle w podanym adresie jest znak małpy, jeśli nie to pojawia się stosowny alert
- przez substring pobieramy tekst od znaku 0 (od początku), aż do znaku @ (ale bez niego, bo tak działa substring)

4.Sprawdzanie poprawności daty - funcja split
Funkcja split podobnie jak i w PHP służy generalnie do tego samego - rozdzielenia jakiegoś ciągu na tablicę (w moim kursie PHP poczytaj o explode i split). Jako parametr należy jej podać jaki znak ma być momentem rozdzielenia, podziału.
No i tak mamy nasz przykład :
- dzielimy podaną datę do tablicy d_tab (rozdzielnikiem jest znak '/')
- sprawdzamy, data jest dobra gdy :
    - utworzona tablica składa się z 3 elementów (miesiąc, dzień, rok)
    - miesiąc to wartość <1,12> , dzień to wartość <1,31> rok to wartość <0,99> ( czyli odpowiednio d_tab[0] przechowuje miesiące, d_tab[1] dni itd. )

Przedstawione funkcje są bardzo przydatne pamiętaj o tym ! Nie mniej dalej opowiem trochę o wyrażeniach regularnych, które jak wspominałem są bardzo ważnym narzędziem w każdym chyba języku programowania (przynajmniej w tych, które miałem okazję poznać).