stringi. - lomilowka.pl
Transkrypt
stringi. - lomilowka.pl
String Jak wiemy zmienne poza liczbami mogą zawierać także ciągi znaków zwane stringami (zostańmy przy sferze programowania :P). var tekst = "Ala ma kota, a kot ma Ale, Ala go lubi, a kot ja wcale..."; Powyżej zadeklarowałem zmienną, która zawiera ciąg znaków. Od tej pory mogę na tej zmiennej (czyli na tym tekście) wykonywać różne czynności, a to za sprawą udostępnianych przez Javascript szeregu właściwości i metod. Pobieranie długości tekstu za pomocą właściwości length Aby odczytać długość naszego tekstu posłużymy się właściwością length. var tekst = "Ala ma kota, a kot ma Ale, Ala go lubi, a kot ja wcale"; alert(tekst.length); //wypisze się 54 //lub też alert( "Ala ma kota".length ) Pobieranie znaku za pomocą charAr() Aby odczytać znak na odpowiedniej pozycji w naszym tekście posłużmy się metodą charAt. var tekst = "Ala ma kota, a kot ma Ale, Ala go lubi, a kot ja wcale"; document.write(tekst.charAt(2)); //wypisze się "a" bo stringi indeksowane są od 0 Kolejne zastosowanie: var tekst = "Ala ma kota, a kot ma Ale, Ala go lubi, a kot ja wcale"; document.write(tekst.charAt(tekst.length-1)); //wypisze się ostatnia litera tekstu czyli "e" Jeszcze jeden przykład: var tekst = "Ala ma kota"; for (i=0; i<tekst.length; i++) { for (x=0; x<i; x++) document.write(" "); document.write("<strong>" + tekst.charAt(i) + "</strong><br />"); Co w rezultacie da nam: A l a m a k o t a No cóż. Używanie niełamliwej spacji do ustawiania pozycji literek nie świadczy zbyt dobrze o naszym profesjonalizmie ^^ Pobieranie kodu znaku za pomocą charCodeAt() Metoda zwraca nam kod ASCII znaku na pozycji podanej w parametrze. var tekst = "Ala ma kota"; document.write(tekst.charCodeAt(0)); //wypisze się 65 (A) document.write(tekst.charCodeAt(4)); //wypisze się 109 (m) Zmiana wielkości liter za pomocą metod toUpperCase() i toLowerCase() Metody toUpperCase() i toLowerCase() służą odpowiednio do zamieniania tekstu na duże i małe litery. ? var tekst = "Ala ma kota"; document.write(tekst.toUpperCase()); //wypisze sie ALA MA KOTA document.write(tekst.toLowerCase()); //wypisze sie ala ma kota Zmiana tylko pierwszych liter w słowach Powyższe metody zmieniają wszystkie litery w danym tekście. Często jednak chcemy zmienić tylko pierwsze litery w słowach (tak zwane Capitalize). Niestety JavaScript nie udostępnia nam metody, która by realizowała to zadanie. Możemy jednak pokusić się aby napisać ją własnoręcznie: function capitalize(str) { var tempArray = str.split(' '); //tworzymy tablicę zawierającą słowa naszego tekstu for (var i = 0; i < tempArray.length; i++) { //wykonujemy pętlę po elementach tablicy tempArray[i] = tempArray[i].charAt(0).toUpperCase() + //zwiększamy pierwszą literkę słowa... tempArray[i].substring(1); //+ dodajemy dalszą część słowa } return tempArray.join(' '); //łączymy naszą tablicę w tekst } document.write( capitalize(zmienna,1) ); To Jest Zdanie Pisane Malymi Literkami Tak samo możemy zamieniać pierwsze litery w słowach na małe. Wystarczy tylko zamiast metody toUpperCase() skorzystać z toLowerCase(). //... tempArray[i] = tempArray[i].charAt(0).toLowerCase() + tempArray[i].substring(1); //... Pobieranie kawałka tekstu za pomocą metody substring() Metoda ta służy do pobierania kawałka tekstu. Pierwszym jej parametrem jest początek pobieranego kawałka tekstu, a drugi wskazuje na ilość pobieranych liter. Drugi parametr jest opcjonalny. Jeżeli go nie podamy, wówczas pobierany kawałek tekstu będzie się rozpoczynał w miejscu na który wskazuje pierwszy parametr, a kończył z końcem tekstu. Na przykład: var tekst = "Ala ma kota"; document.write(tekst.substring(0,3) + '<br />'); //wypisze sie Ala document.write(tekst.substring(3)); //wypisze sie ma kota Ala ma kota Przykład poprawiania imienia: var tekst = "mArCiNeK"; document.write("Przed zamiana: " + tekst + "<br />"); //wypisze sie mArCiNeK document.write("Po zamianie: " + tekst.charAt(0).toUpperCase() + tekst.substr(1).toLowerCase(); //wypisze sie Marcinek Przed zamiana: mArCiNeK Po zamianie: Marcinek Pobieranie kawałka tekstu za pomocą metody substr() Metoda substr ma bardzo podobne działanie do powyższej. Jedyna różnica polega na sposobie wywoływania. Ta metoda wymaga dwóch parametrów - pierwszy określa index początku pobieranego tekstu, drugi ilość znaków do pobrania: var tekst = "Ala ma kota"; document.write(tekst.substr(0,3)); //wypisze sie Ala document.write(tekst.substr(4,7)); //wypisze sie ma kota Ala ma kota Prawdpododobnie w większości przypadków będziesz częściej korzystał z metody substring, gdyż jest łatwiejsza w użyciu. Sprawdzanie pozycji podtekstu za pomocą metody indexOf() Metoda ta służy do podawania pozycji podtekstu w tekście. Jeżeli zwróconą wartością jest -1, to podtekstu nie ma: var tekst = "Ala ma kota"; document.write('Pozycja ciągu kot: ' + tekst.indexOf('kot')); //wypisze sie liczba oznaczająca pozycję ciągu kot Pozycja ciągu kot: 7 var zmienna = "Ala ma kota"; //sprawdzamy czy ciąg "psa" istneje if (tekst.indexOf('psa') > 0) { document.write('Ala ma psa'); } else { document.write('Ala ma kota'); } Ala ma kota Podobne działanie ma metoda lastIndexOf, podaje ona jednak numer indexu ostatniego wystąpienia podtekstu var tekst = "Ala ma kota i tak już jest"; alert(tekst.lastIndexOf('a')); //wypisze 15 Przycinanie tekstu za pomocą metody slice() Tak samo jak w przypadku tablic, tak i w przypadku zmiennych tekstowych możemy skorzystać z metody slice(od,ile), która "tnie" nasz tekst i tworzy w ten sposób nowy. Pierwszy parametr od wskazuje na index (może być ujemny - wtedy będzie liczony od końca tekstu), od którego ma "wyciąć" kolejne litery, a parametr ile wskazuje ile liter ma być "wyciętych" (licząc od początku tekstu): var tekst = "Ala ma kota"; var tekst_2 = tekst.slice(0,3) document.write(tekst_2); //wypisze się Ala var tekst_2 = tekst.slice(1,5) document.write(tekst_2); //wypisze się la m var tekst_2 = tekst.slice(4 , 6) document.write(tekst_2); //wypisze się ma var tekst_2 = tekst.slice(4) document.write(tekst_2); //wypisze się ma kota var tekst_2 = tekst.slice(-3) document.write('Ala już nie ma ' + tekst_2 + ', bo kocur jej zwiał...'); //wypisze się Ala już nie ma kota, bo kocur jej zwiał... No cóż. Tak czasami też bywa... Więcej przykładów zastosowania tej metody możesz zobaczyć tutaj: slice(). Metoda ta bardzo dobrze nadaje się do usuwania pierwszych i ostatnich elementów z naszego tekstu. Aby na przykład usunąć pierwszą literę zastosujemy instrukcję: var tekst = "Ala ma kota"; document.write( tekst.slice(1) ) Aby usunąć ostatnią literę skorzystajmy z instrukcji: document.write( zmienna.slice(0, zmienna.length-1) ) Dzielenie tekstu na części za pomocą metody split() Metoda split(znak,dlugosc) dzieli tekst na części. Miejsce podziału jest podawane w parametrze znak, a maksymalna ilość zwracanych elementów w parametrze długość (IE pomija ten parametr): var tekst = "Ala ma kota, a kot ma Alę, Ala go kocha, a Kot ją wcale ;(" var czesci = tekst.split(', ',2); for (x=0; x<czesci.length; x++) document.write(czesci[x] + '<br />'); Ala ma kota... a kot ma Alę... Zamiana tekstu za pomocą metody replace() Metoda replace(ciag_szuakny, zamieniony) służy do zamiany szukanych kawałków tekstu na inny tekst. var tekst = "Ala ma kota, a kot ma Alę, Ala go kocha, a Kot ją wcale ;(" var zamieniony = tekst.replace("Ala","Ola"); document.write(zmienna + "<br />"); document.write(zamieniony); Ala ma kota Ola ma kota, a kot ma Alę, Ala go kocha, a Kot ją wcale ;( W powyższym przykładzie, zamieniona zostanie tylko pierwsza Ala. Aby wszystkie Ale zmutowały w Ole, musimy zastosować wyrażenie regularne, nakazujące wyszukanie wszystkich Ali. var tekst = "Ala ma kota, a kot ma Alę, Ala go kocha, a Kot ją wcale ;(" var zamieniony = tekst.replace(/Al/g,"Ol"); document.write(zmienna + "<br />"); document.write(zamieniony); Ala ma kota Ola ma kota, a kot ma Olę, Ola go kocha, a Kot ją wcale ;(