Tekstualni podaci
U jeziku C# postoji tip podataka string koji sadrži tekst. On se koristi kao i svi ostali tipovi, te se neka promenljiva tipa string deklariše na sledeći način.
string s = "Bubble bee string";
Možeš da primetiš da se navodnici koriste za dodelu teksta kao vrednosti stringu u primeru iznad. String ovde predstavlja nisku (niz) pojedinačnih znakova.
Dodela stringa
Možemo da dodelimo vrednost jednog stringa drugom.
string str1 = "Zdravo!"; string str2; str2 = str1;
Jedan string može da se inicijalizuje drugim kao u sledećem primeru.
string str1 = "Zdravo!"; string str2 = str1;
"Spajanje" dva stringa
Dva stringa (ili više njih) se mogu spojiti koristeći operaciju sabiranja "+" kao što smo radili sabirajući brojeve.
static void Main(string[] args) { string s = "Bubble"; string p = "bee"; s = s + p; Console.WriteLine(s); }
Nakon izvršavanja programa promenljiva s će sadržati string "Bubblebee".
Unos stringa sa tastature
Kao i kod ostalih tipova, u jeziku C# se za učitivanje i ispisivanje stringa koriste Console.ReadLine i Console.WriteLine funkcije. Sledi primer unošenja stringa sa tastature.
string moj_string; moj_string = Console.ReadLine();
U sledećem primeru se očekuje da korisnik unese svoje ime.
static void Main(string[] args) { string ime; Console.WriteLine("Unesite svoje ime: "); ime = Console.ReadLine(); Console.WriteLine("Ahoj, " + ime + "!"); }
Funkcija Console.ReadLine prestaje da učitava string kada naiđe na nov red, tj. učita sve što je uneto sa tastature pre nego što je korisnik pritisnuo [Enter].
Dužina stringa
Slova, razmaci, znaci interpunkcije i svi ostali znaci koji se koriste u računaru nazivaju se karakteri. Da bismo dobili broj karaktera u nekom stringu, pišemo:
str1.Length
Zapis str1.Length se koristi kao (brojni) izraz, čija je vrednost upravo broj karaktera stringa str1, odnosno njegova dužina. Sledi još jedan primer kratkog programa u kome ilustrujemo dodelu, spajanje i dužinu stringa.
static void Main(string[] args) { string ime; string prezime; string puno_ime; int duzina_imena; Console.WriteLine("Unesi svoje ime: "); ime = Console.ReadLine(); Console.WriteLine("Unesi svoje prezime: "); prezime = Console.ReadLine(); puno_ime = ime + " " + prezime; duzina_imena = puno_ime.Length - 1; // Oduzimamo 1 zbog razmaka Console.WriteLine("Zdravo, " + puno_ime); Console.WriteLine("Tvoje puno ime sadrzi: " + duzina_imena + " karaktera."); }
Primer ispisa ovog programa:
Unesi svoje ime: Ibro Unesi svoje prezime: Dirka Zdravo, Ibro Dirka Tvoje puno ime sadrzi 9 karaktera.
Poređenje stringova
Sledeći programski kod određuje da li je ulazni string jednak unapred zadatom stringu (stringu naše lozinke).
static void Main(string[] args) { string lozinka; lozinka = Console.ReadLine(); if (lozinka == "3astoL1$am0dabrao0vol1koDugackuLoz1nku") { Console.WriteLine("Tacna lozinka!"); } else { Console.WriteLine("Netacna lozinka!"); } }
Iako operatori poređenja == i != mogu da se primene i na stringove tako da možemo formirati izraze koji vraćaju vrednost true/false, to nije slučaj sa ostalim operatorima koje smo navikli da koristimo za poređenje: <, >,<= i >=.
Stringovi mogu da se upoređuju leksikografski, tj. po abecedi. Tako bi npr. string "akrobacije" bio manji od stringa "burek", iako je duži od drugog stringa, zato što se pre njega pojavljuje u rečniku. Ova upoređivanja mogu da se obave uz pomoć funkcije CompareTo koja vraća broj manji od nule ukoliko je prvi string manji od drugog, nulu ako su jednaki, i broj veći od nule ukoliko je prvi veći od drugog.
static void Main(string[] args) { string str1 = Console.ReadLine(); string str2 = Console.ReadLine(); if (str1.CompareTo(str2) < 0) { Console.WriteLine("Prvi je manji"); } else if (str1.CompareTo(str2) > 0) { Console.WriteLine("Drugi je manji"); } else { Console.WriteLine("Jednaki su"); } }
Ako se unesu već spomenute vrednosti "akrobacije" za str1 i "burek" str2, program će ispisati "Prvi je manji".
Toliko za sad o stringovima, biće dalje o njima reči u nastavku priručnika.