170 likes | 287 Views
Računarski praktikum 3 Vježbe 06. Vinko Petričević. Stringovi. String. moguće ih je sortirati (uzimaju se u obzir kulturološke informacije) moguće je sa foreach naredbom proći po svim znakovima stringa moguće je klonirati string i tako dobiti novi string s istom vrijednošću.
E N D
Računarski praktikum 3Vježbe 06 Vinko Petričević Stringovi
String • moguće ih je sortirati (uzimaju se u obzir kulturološke informacije) • moguće je sa foreach naredbom proći po svim znakovima stringa • moguće je klonirati string i tako dobiti novi string s istom vrijednošću public sealed class String : IComparable<T>, ICloneable, IConvertible, IEnumerable<T>
String string s = “Ovo je neki string”; string s1 = “Ovo je prijelaz u novi red\n”; string s2 = @”A ovo nije \n”; string path = @”c:\dokumenti\datoteka.txt”; string tekst = @"prvi redak drugi redak treći redak";
Metode stringa • Chars – Indekser niza znakova. • Compare() – Preopterećena javna statička metoda koja uspoređuje dva niza znakova. • CompareOrdinal() – Preopterećena javna statička metoda koja uspoređuje dva niza znakova bez obzira na lokacijske ili kulturološke postavke. • CompareTo() – Niz znakova uspoređuje s drugim nizom. • Concat() – Preopterećena javna statička metoda koja iz jednog ili više nizova znakova stvara novi niz. • Copy() – Preopterećena javna statička metoda koja novi niz znakova stvara kopiranjem drugog niza znakova. • CopyTo() – Kopira zadani broj znakova u polje Unicode znakova. • Empty – Javno statičko polje koje predstavlja prazan niz znakova. • Equals() – Preopterećena javna statička metoda i metoda instance koja utvrđuje imaju li dva niza znakova istu vrijednost.
Metode stringa • EndsWith() – Vraća true u slučaju da pozivajući niz znakova završava zadanim nizom, inače vraća false. • Format() – Preopterećena javna statička metoda koja formatira niz znakova pomoću specifikacije formata. • IndexOf() – Vraća poziciju prvog pojavljivanja zadanog niza znakova unutar pozivajućeg niza. • Insert() – Vraća novi niz znakova s umetnutim zadanim nizom znakova. • Join() – Preopterećena javna statička metoda koja za zadani znak-separator i polje nizova znakova vraća jedinstven niz znakova sastavljen od elemenata polja spojenih znakom-separatorom. • LastIndexOf() – Daje indeks posljednje pojave određenog znaka ili niza znakova unutar pozivajućeg niza znakova. • Length – Broj znakova u instanci.
Metode stringa • PadLeft() – Znakove u nizu popunjava desno, dok lijevu stranu popunjava razmacima ili zadanim znakom. • PadRight() – Znakove u nizu popunjava lijevo, dok desnu stranu popunjava razmacima ili zadanim znakom. • Remove() – Briše zadani broj znakova. • Split() – Vraća podnizove odvojene određenim znakovima u polju niza znakova. • StartsWith() – Označava počinje li niz zadanim znakom. • Substring() – Dohvaća podniz znakova. • ToCharArray() – Kopira znakove iz niza znakova u polje znakova. • ToLower() – Vraća kopiju niza znakova napisanu malim slovima. • ToUpper() – Vraća kopiju niza znakova napisanu velikim slovima. • Trim() – Uklanja sve pojave skupa zadanih znakova s početka i završetka niza znakova. • TrimEnd() – Ponaša se kao Trim(), ali samo na završetku niza znakova. • TrimStart() – Ponaša se kao Trim(), ali samo na početku niza znakova.
Primjer 1 string s1 = "abcd"; string s2 = "ABCD"; string s3 = "Danas radimo s nizovima znakova."; int rezultatUsporedbe; // Usporedba koja razlikuje valika i mala slova rezultatUsporedbe = string.Compare(s1, s2); Console.WriteLine("Usporedba s1 = {0}, s2 = {1}, rezultat: {2}", s1, s2, rezultatUsporedbe); // Usporedba koja ignorira velika i mala slova rezultatUsporedbe = string.Compare(s1, s2, true); Console.WriteLine("Usporedba (ignorira velika i mala slova): {0} i {1}: {2}", s1, s2, rezultatUsporedbe); // Spajanje dva niza znakova string s4 = string.Concat(s1, s2); // ili s4=s1+s2; Console.WriteLine("s1 spojeno s s2: {0}", s4);
// Kopiranje niza znakova string s6 = string.Copy(s1); // ili s6 = s1; Console.WriteLine("s6 kopiran iz s1: {0}", s6); // Tri načina za uspoređivanje nizova znakova Console.WriteLine("s7.Equals(s1): {0}", s7.Equals(s1)); Console.WriteLine("Equals(s7, s1): {0}", string.Equals(s7, s1)); Console.WriteLine("s7 == s1: {0}", s7 == s1); // Duljina i index svojstva Console.WriteLine("Duljina s1: {0}", s1.Length); Console.WriteLine("Drugi znak u s1: {0}", s1[1]); Console.WriteLine(); Console.WriteLine("s3: {0}", s3); // Testira završava li niz sa skupom znakova Console.WriteLine("s3 završava sa \"znakova\": {0}", s3.EndsWith("znakova")); Console.WriteLine("s3 završava sa \"znakova.\": {0}", s3.EndsWith("znakova."));
// Vraća indeks podniza int indeksPodniza = s3.IndexOf("radimo"); Console.WriteLine("Prva pojava \"radimo\" u s3: {0}", indeksPodniza); // U s3 umećemo riječ "intenzivno" prije "radimo“ string s8 = s3.Insert(indeksPodniza, "intenzivno "); Console.WriteLine("s8: {0}", s8);
Primjer 2 string s = "Jedan Dva Tri Četiri"; while (s.Length > 0) { // tražimo zadnji razmak u nizu znakova int indeksRazmaka = s.LastIndexOf(" "); //Ako razmak postoji if (indeksRazmaka >= 0) { // ispisujemo zadnju riječ string zadnjaRijec = s.Substring(indeksRazmaka + 1); Console.WriteLine(zadnjaRijec); // uzimamo podniz koji sadrži sve osim zadnje riječi s = s.Substring(0, indeksRazmaka); } else { // inače je ovo zadnja preostala riječ // ispisujemo ju i praznimo niz znakova Console.WriteLine(s); s = ""; } }
Zadatak 1 • Napišite program koji učitava 2 stringa, te svaku pojavu drugog stringa u prvom premješta na kraj prvog stringa. Na kraju ispisuje dobiveni string • kokodako kodakokoko
Primjer 3 string s = "Jedan Dva,Tri Četiri"; // definiramo niz graničnika koji razgraničuju riječi char[] granicnici = new char[] { ' ', ',' }; // metoda Split() dijeli niz znakova na podnizove string[] rijeci = s.Split(granicnici); // ili s.Split(' ', ','); // nizove ispisujemo obrnutim redoslijedom for (int i = rijeci.Length - 1; i >= 0; i--) { Console.WriteLine(rijeci[i]); }
StringBuilder • string je nepromijenjivi niz znakova. Prilikom svake izmijene se kreira kopija na kojoj se mijenja, a stari string ostaje u memoriji nepromijenjen i čeka sakupljanje otpada • StringBuilder se može mijenjati
StringBuilder – važnije metode • Append() – Preopterećena javna metoda koja niz znakova dodaje na završetak trenutnog StringBuilder. • AppendFormat() – Preopterećena javna metoda koja specifikatore formata zamjenjuje formatiranom vrijednosti objekta. • Chars – Indekser. • Insert() – Preopterećena javna metoda koja na zadani položaj umeće niz znakova. • Length – Vraća ili postavlja duljinu StringBuilder. • Remove() – Uklanja zadane znakove. • Replace() – Preopterećena javna metoda koja sve instance zadanih znakova zamjenjuje novim znakovima.
Primjer 4 string s = "Jedan Dva,Tri, Četiri"; char[] granicnici = new char[] { ' ', ',' }; string[] rijeci = s.Split(granicnici); // Kreiramo novi objekt klase StringBuilder StringBuilder izlaz = new StringBuilder(); // dodajemo izdvojene riječi obrnutim redoslijedom for (int i = rijeci.Length - 1; i >= 0; i--) { izlaz.AppendFormat("{0}: {1}\n", i, rijeci[i]); } // Ispisujemo objekt izlaz Console.WriteLine(izlaz);
Regularni izrazi • .net ima ugrađenu podršku za prepoznavanje regularnih izraza string s = "Jedan Dva,Tri, Četiri"; // instanciramo novi objekt klase Regex Regex regularniIzraz = new Regex(" |, |,"); // metoda Split() objekta klase Regex dijeli niz znakova na podnizove string[] rijeci = regularniIzraz.Split(s); StringBuilder izlaz = new StringBuilder(); for (int i = rijeci.Length - 1; i >= 0; i--) izlaz.AppendFormat("{0}: {1}\n", i, rijeci[i]); Console.WriteLine(izlaz);
Regularni izrazi • .net ima ugrađenu podršku za prepoznavanje regularnih izraza string s = "Jedan Dva,Tri, Četiri"; // statička metoda Split() klase Regex string[] rijeci = Regex.Split(s, " |, |,"); StringBuilder izlaz = new StringBuilder(); for (int i = rijeci.Length - 1; i >= 0; i--) izlaz.AppendFormat("{0}: {1}\n", i, rijeci[i]); Console.WriteLine(izlaz);