Mi konstantno koristimo stringove. Njihova upotreba u kodiranju je toliko česta čak i kad ne koristite ni delimično sve mogućnosti manipulacije sa stringovima. String u C# programskom jeziku vam je instanca klase System.String koja predstavlja tekst kao nepromenjivu sekvencu Unicode karaktera. Svaki karakter u stringu je Unicode simbol; ključna reč string sa kojom deklarišemo promenjive tipa string je samo alias klase System.String.

  string link = "www.manuelradovanovic.com";
String link = "www.manuelradovanovic.com";
System.String link = "www.manuelradovanovic.com";

Sve tri navedene deklaracije su vam iste. Ono što je bitno da upamtite da je string referentni tip podataka. Pre inicijalizacije tip string ima vrednost null.

Često će te čuti da je string kao i niz tipa char; sličnost definitivno postoji, indeksiranje počinje od 0 ali ovo definitivno neće raditi jer karakteri ne mogu biti modifikovani kao u nizovima:

  link[0] = 'M'; // error 

Međutim, ovo hoće:

  char[] alphabet = new char[18]; 
alphabet[0] = link[4]; // Output: m
Klasa String jednostavno tretira stringove kao niz char ali read-only. Vi možete dodeliti vrednost tipu string, dodeliti mu neku vrednost niza tipa char ili dodeliti mu neku vrednost tipa string.
  string link = "www.manuelradovanovic.com"; 
char[] alphabets = { 'M', 'a', 'n', 'u', 'e', 'l' };
link = new string(alphabets);
string name = link;
Ali za manipulisanje karakterima u stringu, to možete jedino implicitno preko metoda klase String. Jednom kad deklarišete i dodelite vrednost promenjivoj tipa string; to je nepromenjivo! Zato kad vi dodelite ili promenite neku drugu vrednost promenjivoj tipa string vi u stvari stvarate novi string u memoriji dok samo imate utisak da je vaš string promenio vrednost. Vaš stari string će biti uklonjen čim to ustanovi sakupljač otpadaka, dok vi vidite vrednost novog stringa.

Koje se metode najčešće koriste za manipulaciju stringovima?

Većina misli da se od svih metoda klase String najviše koristi read-only metoda Lenght koja predstavlja dužinu stringa. To naravno zavisi od toga šta hoćete da radite sa stringovima. Klasa String sadrži veliki broj metoda koji služe za obavljanje jednostavnih zadataka poput zamene karaktera, uklanjanje praznog prostora ili menjanje malih u velika slova i obratno. Pogledajte značenje nekih od najvažnijih metoda u klasi String:

  • Compare – Poredi sadržaj stringova uzimajući u vidu lokalnost tj. kulturu.
  • CompareOrdinal – Poredi sadržaj stringova ne uzimajući u obzir lokalnost tj. kulturu.
  • Copy – Kopira u novi string vrednost drugog stringa.
  • Equals – proverava da li dva stringa imaju istu vrednost.
  • Format – Formatira stringove različitih vrednosti i specifikatore formata.
  • IndexOf – Pronalazi prvi karakter ili prvo pojavljivanje podstringa.
  • IndexOfAny – Pronalazi prvo pojavljivanje bilo kog iz skupa karaktera u stringu.
  • LastIndexOf – Pronalazi zadnji karakter ili zadnje pojavljivanje podstringa.
  • LastIndexOfAny – Pronalazi zadnje pojavljivanje bilo kog iz skupa karaktera u stringu.
  • PadLeft – Dopunjava string dodajući određeni karakter koliko puta odredite na početak stringa.
  • PadRight – Dopunjava string dodajući određeni karakter koliko puta odredite na kraj stringa.
  • Remove – Briše određeni broj karaktera od navedene pozicije u stringu.
  • Replace – Zamenjuje pojavljivanje određenih karaktera ili podstringova.
  • Split – Deli string na niz podstringova na mestima gde se navedeni karakter nalazi.
  • Substring – Vraća podstring od navedene pozicije u stringu.
  • ToLower – Sva slova u stringu pretvara u mala slova.
  • ToUpper – Sva slova u stringu pretvara u velika slova.
  • Trim – Uklanja praznine i sa leve i sa desne strane stringa.
  • TrimStart – Uklanja praznine sa početka stringa.
  • TrimEnd – Uklanja praznine sa kraja stringa.
  • Itd.
Da bi ste najlakše i najbolje naučili kako da koristite ove metode neophodno je da se sami na programerski način kodiranjem igrate sa stringovima. To jest da ih menjate kako vama odgovara. Pogledajte sledeći kod programa. Taj kod menja link  u ime i prezime koristeći razne metode klase String samo da bi prezentovao kako se koriste neke od metoda, da bi zatim i od imena i prezimena ponovo napravio link. Manipulacije sa stringovima ćete inače najčešće koristiti kada pravite na primer neki gramatički program za neki strani jezik koji menja imenice i prideve prema padežima i slično. Tada ćete praviti i vaše vlastite metode da bi ste skratili postupak korišćenja više metoda. Za sada dobro analizirajte kod programa i pokušajte da i vi nešto slično kodirate na vašu ruku.

using System;
using static System.Console; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace StringClass {    class Program
{
static void Main(string[] args)
{
      // declaration and adding value to the string type
      string link = "www.manuelradovanovic.com";
     // line of 20 characters like as '-'
      string lines = new String('-', 20);
      // this declarations are the same like as the empty string declarations too
      String firstName = "";
      System.String lastName = String.Empty;
      // for the string concatenation use operator +
      // it's not the good practice if you do it in the loop
      WriteLine("String variable: " + link);
      WriteLine(lines + Environment.NewLine);
      // lenght of the string variable link
      WriteLine("Lenght of variable: " + link.Length);

      // remove 4 characters from the index 0
      link = link.Remove(0, 4);
      WriteLine("Remove 4 characters from 0: " + link);
      // remove the last 4 characters
     link = link.Remove(link.Length - 4, 4);
     WriteLine("Remove the last 4 characters: " + link);
     // replace 'r' with ' r'
     link = link.Replace("r", " r");
    WriteLine("Replace 'r' with ' r' characters: " + link);
     // split words
     string [] twoWords = link.Split(' ');
    firstName = twoWords[0];
     lastName = twoWords[1];
     WriteLine("Split words: " + firstName + " and " + lastName);

WriteLine(Environment.NewLine + lines + Environment.NewLine);  

// show the first and last name to upper of first letters
firstName = firstName.Substring(0, 1).ToUpper() + firstName.Substring(1);
     lastName = lastName.Substring(0, 1).ToUpper() + lastName.Substring(1);
     WriteLine("First Name: " + firstName);
     WriteLine("Last Name: " + lastName);
     WriteLine(Environment.NewLine + lines + Environment.NewLine);
     // Compare first name with 'manuel' - case-sensitive
     if (String.Compare(firstName, "manuel", false) == 0)
     {
       WriteLine("Compare first name with 'manuel' - case-sensitive: True");      }
     else
     {
        WriteLine("Compare first name with 'manuel' - case-sensitive: False");
    }
    // Compare first name with 'manuel' - case-insensitive
     if(String.Compare(firstName, "manuel", true) == 0)
    {
       WriteLine("Compare first name with 'manuel' - case-insensitive: True");      }
     else
     {
        WriteLine("Compare first name with 'manuel' - case-insensitive: False");
     }
    WriteLine(Environment.NewLine + lines + Environment.NewLine);

    // for the string concatenation use Concat method
    link = String.Concat(firstName, lastName);
    WriteLine("Concat method: " + link);
    // change the string link variable to lower 
    link = link.ToLower();
  WriteLine("ToLower: " + link);
    // use Join method to add www. and .com
   string[] threeWords = new string[3];
    threeWords[0] = "www";
    threeWords[1] = link;
    threeWords[2] = "com";
    link = String.Join(".", threeWords);
    WriteLine("Join: " + link);
    ReadKey();
}
}

}

Pokrenite program i pogledajte šta ćete dobiti.

Kako to sve izgleda možete pogledati i na video-u:

izvor, www.manuelradovanovic.com


Last modified: Tuesday, 10 November 2020, 7:48 PM