Nizi v C#

Nizi v C#

Avtor: Mateja Smerdel

O nizih, deklaracija niza

niz - ang. string

Nizi v C# so tipa string. Niz je lahko sestavljen iz enega ali več zaporednih znakov, lahko pa ne vsebuje nobenega znaka, takemu pravimo prazen niz.

Nizi so zaporedje znakov med dvojnima narekovajema. Začetek in konec niza torej določa znak ", vse kar je med tema dvema znakoma pa predstavlja vsebino niza.

Vsako spremenljivko, ki jo želimo uporabiti moramo najprej napovedati - deklarirati. Niz deklariramo na naslednji način: string niz; , kjer s string povemo, da gre za podatkovni tip niz, v niz pa navedemo ime spremenljivke, katero bomo v nadaljevanju uporabljali. Spremenljivki lahko določimo tudi začetno vrednost, npr. string niz="Mateja"; .

Nize lahko deklariramo na več načinov. Poglejmo si deklaracijo nizov kar na spodnjih primerih:

(nizi1.bmp)
Slika1: Pimeri deklaracije niza
  • v prvem primeru smo najprej deklarirali spremenljivko tipa string in ji nato, v naslednji vrstici priredili vrednost
  • v drugem primeru smo pri deklaraciji spremenljivke, že v istem stavku, spremenljivki tudi določili vrednost
  • v zadnjem primeru smo deklarirali prazen niz

Indeksiranje, dostopanje do znakov niza

Do znakov v nizu dostopamo z indeksi, in sicer na naslednji način niz[indeks] , kjer indeks predstavlja indeks znaka do katerega želimo dostopiti v nizu, ki je shranjen v spremenljivki niz .

Primer indeksiranja znakov v nizu vidimo na spodnji sliki:

(nizi2.bmp)
Slika2: Indeksiranje znakov v nizu

Vidimo, da ima vsak znak v nizu svoj indeks. Tudi posebni znaki v nizu, kot so presledek, ločila imajo dolčen indeks. Prvi znak niza ima indeks 0, zadnji pa n-1, kjer je n število vseh znakov niza.

Poglejmo si še primer dostopanja do zankov v nizu v programu C#. Če želimo na nizu  "Zunaj sije sonček."  dostopiti do prvega znaka, potem to v C# napišemo na naslednji način:

(nizi3.bmp)
Slika3: Dostopanje do znakov v nizu

In še rezultat ob zagonu zgornjega programa:

(nizi4.bmp)
Slika4: Izpis na zaslonu

Kot rezultat smo dobili znak Z. Če pogledamo v zgornji preglednici, kjer imamo primer indeksiranja danega niza, vidimo da je znak, ki se nahaja na poziciji 0 v nizu res ravno Z.

Do zadnjega znaka v nizu lahko dostopamo tudi na naslednji način niz[niz.Length-1] , kjer metoda Length nad nizom izračuna dolžino niza (n), to si bomo podrobneje pogledali še v nadaljevanju. Torej na ta način bi dobili znak, ki se v nizu nahaja na poziciji n-1, kjer je n število znakov v nizu.

Pomembno je opozoriti tudi na to, da v nizu znakov ne moremo spreminjati vendar lahko samo dostopamo do določenega znaka!

Stikanje nizov

Nize lahko med seboj tudi stikamo ozirma združujemo, in sicer s pomočjo operatorja +, na naslednji način: niz1 + niz2 + … . Če eden od teh izrazov ni niz, se le ta pretvori v niz.

Poglejmo si primer stikanja nizov v C#:

(nizi5.bmp)
Slika5: Stikanje nizov

V vsaki od spremenljivk niz1, niz2 in niz3 smo definirali po en niz. V izpisu nize med seboj staknemo, z operatorjem +. Poglejmo si še, kaj dobimo ob zagonu programa:

(nizi6.bmp)
Slika6: Izpis na zaslonu

Poglejmo si še en primer stikanja, ko je eden od izrazov, ki jih med seboj staknemo številskega tipa (torej ni tipa string ). Videli bomo, da se ta res pretvori v niz.

(nizi7.bmp)
Slika7: Stikanje nizov

In še rezultat ob zagonu programa:

(nizi8.bmp)
Slika8: Izpis na zaslonu

Dolžina niza

Dolžino niza oziroma število znakov v nizu dobimo s pomočjo lastnosti Length, na naslednji način: niz.Length .

Na spodnjem primeru si poglejmo kako dobimo število znakov niza.

(nizi9.bmp)
Slika9: Dolžina niza

Najprej smo definirali nek niz in ga shraili v spremenljivko tipa string . Na tako deklariranem nizu uporabimo lastnost Length. Poglejmo si kaj dobimo, ko prevedemo zgornji program:

(nizi10.bmp)
Slika10: Izpis na zaslonu

Kot rezultat smo dobili dolžino niza "Zunaj sije sonček.". Če bi prešteli število znakov v nizu bi videli, da je teh res ravno 18. Kot znak se štejejo tudi ločila in presledek.

Primerjanje nizov1

Za primerjanje enakosti dveh nizov uporabimo metodo Equals(), ki jo uporabimo na naslednji način niz1.Equals(niz2) . Ta preveri, če primerjana niza vsebujeta enako zaporedje znakov. Metoda v primeru, da sta niza enaka vrne logično vrednost True, drugače pa False.

Poglejmo si kar na primeru v C#. Definirajmo niza niz1 in niz2 , ki sta med seboj enaka ter niz3 , ki se od njiju razlikuje:

(nizi11.bmp)
Slika11: Primerjanje nizov1

In še rezultat ob zagonu:

(nizi12.bmp)
Slika12: Izpis na zaslonu
  • v prvem primeru smo med seboj primerjali dva niza (niz1 in niz2 ) ki sta med seboj enaka, zato metoda vrne vrednost True
  • v drugem primeru smo med seboj primerjali različna niza,(niz1 in niz3 ) zato smo kot rezultat dobili vrednost False

Na podoben način, bi lahko enakost dveh nizov preverili tudi s pomočjo operatorja ==.

Poglejmo si na enakem primeru kot zgoraj še ta način v C#:

(nizi13.bmp)
Slika10: Primerjanje nizov2

In ob zagonu dobimo enak rezultat kot zgoraj:

(nizi12.bmp)
Slika12: Izpis na zaslonu

Primerjanje nizov2

Nize lahko med seboj primerjamo tudi po "velikosti" oz. po abecednem vrstnem redu. Tu se nizi primerjajo glede na mesto črke v tabeli nabora znakov. Za takšen način primerjanja nizov uporabimo metodo CompareTo(), in sicer na naslednji način niz1.CompareTo(niz2) .

Kot rezultat te metode dobimo:

  • vrednost 0 v primeru, da sta niza niz1 in niz2 enaka (torej če vsebujeta enako zaporedje znakov)
  • negativno vrednost, če je niz niz1 manjši od niza niz2 (torej če je niz1 po abecednem vrstnem redu pred nizom niz2 )
  • pozitivno vrednost, če je niz niz1 večji od niza niz2 (torej če je niz niz1 po abecednem vrstnem redu za nizom niz2 )

Poglejmo si še uporabo te metode kar na konkretnem primeru v C#:

(nizi14.bmp)
Slika14: Primerjanje nizov3

In še izpis na zaslonu ob zagonu programa:

(nizi15.bmp)
Slika15: Izpis na zaslonu

Kot rezultat smo dobili negativno vrednost, in sicer zato ker je niz mateja po abecednem vrstnem redu pred nizom matjaž . Prve tri črke nizov so med seboj enake, nasednja črka (četrta), ta je v nizu mateja enaka e pa je po abecednem vrstnem redu pred četrto črko niza matjaž , ki je enaka j .

Za primerjanje lahko uporabimo še metodo IndexOf(), ki preveri ali se podniz nahaja v danem nizu. Uporabimo na naslednji način niz.IndexOf(podniz) . Metoda v primeru da se podniz nahaja v nizu niz vrne pozitivno vrednost, ki pove indeks mesta kjer se podniz prvič pojavi v nizu niz oziroma negativno vrednost, če iskanega podniza v nizu ni.

Uporabo metode si poglejmo še na konkretnem primeru:

(nizi16.bmp)
Slika16: Primerjanje nizov4

Izpis ob zagonu programa:

(nizi17.bmp)
Slika17: Izpis na zaslonu

Kot rezultat smo dobili vrednost 4, torej se podniz mateja v nizu ababmatejaaa začne na indeksu 4.

Pretvarjanje iz niza v celo oz. decimalno število

Če imamo v nizu podane samo števke in bi tak niz radi pretvorili v celo število, za to uporabimo metodo int.Parse(), in sicer na naslednji način int.Parse(niz) , kjer je niz zaporedje znakov, katerega želimo pretvorili v število.

V primeru, da želimo niz pretvoriti v decimalno število, potem to storimo na podoben način kot prej, le da tu uporabimo metodo double.Parse().

Poglejmo si uporabo zgornjih dveh metod na konkretnih primerih v C#. Definirana imamo dva niza, v katerih hranimo števke. Nato pa prvega pretvorimo v celo število, drugega pa v decimalno in ju shranimo v spremenljivki ustreznega tipa, ki ju nato izpišemo na zaslon:

(nizi18.bmp)
Slika18: Pretvarjanje iz string v int oz. double

Kot rezultat dobimo številske vrednosti, ki smo ju shranili v spremenljivki tipa int oziroma double v drugem primeru:

(nizi19.bmp)
Slika19: Izpis na zaslonu

Še nekaj metod nad nizi

V spodnji tabeli je prikazanih še nekaj metod, ki jih lahko uporabimo nad nizi in opisi le-teh.

(niziMetode.bmp)
Slika20: Metode nad nizi

Uporabljena literatura

0%
0%