Strona początkowa

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("&nbsp;&nbsp;&nbsp;&nbsp;");
			document.write("<strong>" + tekst.charAt(i) + "</strong><br />");
	}
	

Co w rezultacie da nam:

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() +		//zmiększamy pierwszą litrkę słowa...
			tempArray[i].substring(1);									//+ dodajemy dalszą część słowa
		}
		return tempArray.join(' ');										//łączymy naszą tablicę w tekst
	}

	document.write( capitalize(zmienna,1) );
	

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
	

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
	

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
	

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
	

	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');
    }
	

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 10
	

Kodowanie tekstu za pomocą funkcji escape()

W niektórych przypadkach nie porządane jest stosowanie pewnych znaków takich jak:

[,], [spacja], [-], [#], [_], [&], [%], [[], []], [&], [;], [:], [?], ['], [(], [)], [~], [|], [`], [!].

Jak wiadomo w adresie strony takie znaki nie mogą występować. To samo tyczy się nazw i wartości zmiennych zapisanych w tak zwanym query stringu (np. index.php?pierwsza_zmienna=wartosc1&druga_zmienna=wartosc2) czy też nazw i wartości zmiennych zapisanych w ciasteczkach.

Aby móc użyć tych znaków musimy nasz tekst przetworzyć za pomocą funkcji escape()

	var tekst = "Ala ma kota, a kot ma Alę...";
	document.write('Przed: ' + tekst + '<br />');
	document.write('Po: ' + escape(tekst) );
	

Rozkodowanie tekstu za pomocą funkcji unescape()

Aby prze konwertować zakodowany za pomocą funkcji escape() tekst musimy posłużyć się funkcją unescape():

	var tekst = "Ala ma kota, a kot ma Alę...";
		tekst = escape(tekst);
	document.write('Przed: ' + tekst + '<br />');
	document.write('Po: ' + unescape(tekst) );
	

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 />');
	

Zamiana tekstu za pomocą metody replace()

Metoda replace(ciag_szuakny,zamienieniony) 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);
    

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);