Visit Mozilla.org

Dokumentacja języka JavaScript 1.5:Obiekty:String

z Mozilla Developer Center, polskiego centrum programistów Mozilli.


Spis treści

[edytuj] Podsumowanie

Obiekt główny

Reprezentuje obiekt przechowujący łańcuch znaków w łańcuchu znaków.

[edytuj] Tworzony przez

Konstruktor łańcucha znaków:

new String(string)

[edytuj] Parametry

string 
Dowolny łańcuch znaków.

[edytuj] Opis

Obiekty String są tworzone przez wywołanie new String():

s_obj = new String("foo"); // tworzy obiekt String 

Obiekt String opakowuje dane prostego łańcucha znaków JavaScript wpisanych za pomocą opisanej poniżej metody. Funkcja globalna String() może także być wywołana bez new z przodu do tworzenia prostych łańcuchów:

s_prim = String("bar"); //tworzy prosty łańcuch znaków

Literał znakowy w kodzie źródłowym JavaScript tworzy proste łańcuchy znaków:

s_also_prim = "foo"; // tworzy prosty łańcuch znaków

Ponieważ JavaScript automatycznie przeprowadza przekształcenia pomiędzy prostymi łańcuchami znaków i obiektami String, możemy wywołać każdą z metod obiektu String dla prostego łańcucha znaków. JavaScript automatycznie przekształca prosty łańcuch znaków do tymczasowego obiektu String, wywołując metodę, odrzuca wówczas tymczasowy obiekt String. Dla przykładu, możemy użyć własności String.length w prostym łańcuchu znaków utworzonym za pomocą literału znakowego:

s_obj.length;       // 3
s_prim.length;      // 3
s_also_prim.length; // 3
'foo'.length;       // 3
"foo".length;       // 3

(Literał znakowy może używać pojedynczego lub podwójnego znacznika cytowania).

Obiekty String mogą być przekształcane do prostych łańcuchów znaków z String.valueOf().

Proste łańcuchy znaków i obiekty String dają różne wyniki, gdy są interpretowane jak JavaScript. Proste są traktowane jako kod źródłowy; obiekty String są traktowane jako łańcuch znaków obiektu. Na przykład:

s1 = "2 + 2" // tworzy prosty łańcuch
s2 = new String("2 + 2") // tworzy obiekt String 
eval(s1)     // zwraca liczbę 4
eval(s2)     // zwraca łańcuch znaków "2 + 2"
eval(s2.valueOf()); // zwraca liczbę 4

Możesz przekształcić wartość każdego obiektu do łańcucha znaków używając funkcji globalnej String.

[edytuj] Uzyskanie dostępu do pojedynczych znaków w łańcuchu

Są dwa sposoby uzyskiwania dostępu do pojedynczych znaków w łańcuchu. Pierwszą z nich jest metoda charAt:

'kot'.charAt(1) // zwraca "o"

Drugim sposobem jest wykorzystanie łańcucha jak tablicy, gdzie kolejne indeksy odpowiadają pojedynczym znakom:

'kot'[1] // zwraca "o"

Zauważ: Druga metoda (użycie łańcucha jako tablicy) nie jest częścią ECMASctiptu; jest ona cechą JavaScriptu.

W obu sposobach, próba ustawienia pojedynczego znaku zakończy się fiaskiem. Próba ustawienia znaku poprzez charAt kończy się błędem:

var x = 'kot';
x.charAt(0) = 'b'; // błąd

Ustawianie znaku poprzez indeksowanie nie zwróci błędu, ale wtedy sam łańcuch nie zostanie zmieniony:

var x = 'kot';
x[2] = 'p';
alert(x);    // wciąż daje "kot"
alert(x[2]); // wciąż daje "t"

[edytuj] Porównywanie łańcuchów

Programiści języka C mają funkcję strcmp() służącą im do porównywania łańcuchów. W JavaScript używamy po prostu operatorów, mniejszy niż (<) i większy niż (>):

var a = "a";
var b = "b";
if (a < b) // prawda
    document.write(a + " jest mniejsze od " + b);
else if (a > b)
    document.write(a + " jest większe od " + b);
else
    document.write(a + " i " + b + " są równe.");

[edytuj] Własności

  • constructor : Oznacza funkcję, która tworzy prototyp obiektu.
  • length : Odzwierciedla długość łańcucha znaków.
  • prototype : Pozwala na dodawanie własności do obiektu String.

[edytuj] Metody statyczne

  • fromCharCode : Zwraca łańcuch znaków stworzony przez podaną sekwencję kodów Unicode.

[edytuj] Metody

[edytuj] Metody niezwiązane z HTML

  • charAt: Zwraca znak o podanym indeksie.
  • charCodeAt: Zwraca liczbę oznaczającą wartość Unicode znaku o podanym indeksie.
  • concat: Łączy dwa łańcuchy znaków i zwraca nowy łańcuch.
  • indexOf: Zwraca indeks pierwszego wystąpienia podanego znaku w obiekcie String lub -1, gdy niczego nie znaleziono.
  • lastIndexOf: Zwraca indeks ostatniego wystąpienia podanego znaku w obiekcie String lub -1, gdy niczego nie znaleziono.
  • match: Używane do porównania wyrażenia regularnego z łańcuchem znaków.
  • replace: Używane do znalezienia podobieństwa pomiędzy wyrażeniem regularnym a łańcuchem znaków, a następnie do podmiany znalezionego podłańcucha nowym podłańcuchem.
  • search: Uruchamia wyszukiwanie podobieństwa pomiędzy wyrażeniem regularnym a podanym łańcuchem.
  • slice: Wyciąga kawałek łańcucha i zwraca nowy łańcuch.
  • split: Dzieli obiekt String na tablicę łańcuchów poprzez dzielenie łańcucha na podłańcuchy.
  • substr: Zwraca podłańcuch znaków z łańcucha, zaczynający się w podanym miejscu i podanej długości znaków.
  • substring: Zwraca znaki w podłańcuchu pomiędzy dwoma indeksami w łańcuchu.
  • toLowerCase: Zwraca wywołujący łańcuch skonwertowany do małych liter.
  • toSource: Zwraca literał obiektu reprezentujący podany obiekt; możesz użyć tej wartości do utworzenia nowego obiektu. Przesłania metodę Object.toSource.
  • toString: Zwraca łańcuch reprezentujący podany obiekt. Przesłania metodę Object.toString.
  • toUpperCase: Zwraca wywołujący łańcuch skonwertowany do WIELKICH LITER.
  • valueOf: Zwraca wartość prymitywną podanego obiektu. Przesłania metodę Object.valueOf.

[edytuj] Metody związane z HTML

Niestandardowy

  • anchor: Tworzy HTML anchor, który jest użyty jako kotwica.
  • big: Powoduje, iż łańcuch zostanie wyświetlony jakby był on wewnątrz znacznika BIG.
  • blink: Powoduje, iż łańcuch będzie migotał tak jakby był on wewnątrz znacznika BLINK.
  • bold: Powoduje, iż łańcuch zostanie wyświetlony jakby był wewnątrz znacznika B.
  • fixed: Powoduje, iż łańcuch zostanie wyświetlony czcionką o stałej szerokości tak jakby był wewnątrz znacznika TT.
  • fontcolor: Powoduje, iż łańcuch zostanie wyświetlony podanym kolorem tak jakby był wewnątrz znacznika <FONT COLOR="color">.
  • fontsize: Powoduje, iż łańcuch zostanie wyświetlony czcionką o podanej wielkości tak jakby był wewnątrz znacznika <FONT SIZE="size">.
  • italics: Powoduje, iż łańcuch zostanie wyświetlony kursywą tak jakby był wewnątrz znacznika I.
  • link: Tworzy łącze hipertekstowe, które wywołuje inny adres URL.
  • small: Powoduje, iż łańcuch zostanie wyświetlony małą czcionką tak jakby był wewnątrz znacznika SMALL.
  • strike: Powoduje, iż łańcuch zostanie wyświetlony przekreślony, tak jakby był wewnątrz znacznika STRIKE.
  • sub: Powoduje, iż łańcuch zostanie wyświetlony jako indeks dolny tak jakby był wewnątrz znacznika SUB.
  • sup: Powoduje, iż łańcuch zostanie wyświetlony jako indeks górny tak jakby był wewnątrz znacznika SUP.

[edytuj] Przykłady

[edytuj] Przykład: Dosłowny łańcuch znaków

Poniższy przykład tworzy dosłowny łańcuch znaków i przypisuje go do zmiennej nazwisko:

var nazwisko = "Schaefer";

[edytuj] Przykład: Własności dosłownego łańcucha znaków

Poniższe przykłady ewaluują do 8, "SCHAEFER" i "schaefer":

nazwisko.length
nazwisko.toUpperCase()
nazwisko.toLowerCase()

[edytuj] Przykład: Ustawianie pojedynczego znaku w łańcuchu

Pojedynczy znak w łańcuchu nie może być zmieniony bezpośrednio. Zamiast tego, nowy łańcuch może być utworzony używając metody substr lub substring:

function ustawZnak(lancuch, indeks, znak) {
   return lancuch.substr(0, indeks) + znak + lancuch.substr(indeks + 1);
}

alert(ustawZnak('scam', 1, 'p')); // napisze "spam"

[edytuj] Przykład: Przekazywanie łańcucha pomiędzy skryptami w różnych oknach lub ramkach

Poniższy przykład tworzy dwie zmienne łańcuchowe i otwiera nowe okno:

var nazwisko = "Schaefer";
var imie = "Jesse";
empWindow = window.open('string2.html', 'window1', 'width=300,height=300');

W źródle HTML drugiego okna (string2.html), tworzy dwie zmienne łańcuchowe, empNazwisko i empImie, poniższy kod w pierwszym oknie przypisuje wartości do zmiennych drugiego okna:

empWindow.empImie = imie;
empWindow.empNazwisko = nazwisko;

Poniższy kod w pierwszym oknie wyświetla wartości zmiennych drugiego okna:

alert('Wartość empImie w empWindow to ' + empWindow.empImie);
alert('Wartość empNazwisko w empWindow to ' + empWindow.empLastName);