Методе за рад са стринговима¶
Као што је поменуто у претходној лекцији, класа String садржи велики број
метода које омогућавају рад са стринговима – претраживање, издвајање делова
текста, конверзију у велика или мала слова, замену подстрингова, уклањање
белина и друге трансформације.
Методе не мењају оригинални стринг, већ враћају нови. Подсети се, када се
стринг измени (нпр. дода му се карактер), у позадини се креира нова инстанца
класе String, а стара се оставља за сакупљача отпада. Ово је важно знати
због перформанси – у случајевима када се стрингови интензивно мењају у петљама,
препоручује се коришћење класе StringBuilder.
Иако је string референтни тип у програмском језику C#, он се понаша као да је
вредносни у многим ситуацијама. То је зато што је string имутaбилан
(енгл. immutable) – свака измена ствара нови објекат у меморији.
У овој лекцији биће представљене најчешће коришћене методе класе String.
ToUpper() и ToLower()¶
Конвертују сва слова у велика или мала.
string tekst = "Програмирање";
string malaSlova = tekst.ToLower(); // "програмирање"
string velikaSlova = tekst.ToUpper(); // "ПРОГРАМИРАЊЕ"
Trim(), TrimStart(), TrimEnd()¶
Уклањају празнине (или друге наведене карактере) са почетка и/или краја стринга.
string unos = " тест ";
string obradjeno = unos.Trim(); // "тест"
Substring(int startIndex, int length)¶
Издваја део стринга дате дужине, почевши од дате позиције.
string tekst = "Програмирање";
string deo = tekst.Substring(0, 4); // "Прог"
IndexOf() и LastIndexOf()¶
Проналазе позицију првог или последњег појављивања карактера или подстринга.
string tekst = "Програм";
int pozicija = tekst.IndexOf("г"); // 3
Contains()¶
Проверава да ли стринг садржи дати подстринг.
bool ima = tekst.Contains("рам"); // true
Replace(oldValue, newValue)¶
Мења сва појављивања једног подстринга другим.
string novaVerzija = tekst.Replace("ра", "РА"); // "ПрогРАмирање"
StartsWith() и EndsWith()¶
Проверавају да ли стринг почиње или се завршава одређеним подстрингом.
bool pocinje = tekst.StartsWith("Прог"); // true
bool zavrsava = tekst.EndsWith("ње"); // true
Split()¶
Дели стринг у низ стрингова, према наведеном раздвајачу.
string linija = "име,презиме,разред";
string[] podaci = linija.Split(',');
// podaci[0] = "име", podaci[1] = "презиме", podaci[2] = "разред"
Join()¶
Супротно од Split() – спаја низ стрингова у један, користећи дати раздвајач.
string rezultat = string.Join(" - ", podaci);
// "име - презиме - разред"
Поређење стрингова: оператор или метода?¶
У C#-у можеш да поредиш стрингове оператором == или методом Equals(). Оба
приступа упоређују вредност (садржај) стринга, за разлику од језика C, где ==
упоређује адресе (показиваче), а не садржај низа карактера.
string a = "test";
string b = "test";
Console.WriteLine(a == b); // True
Console.WriteLine(a.Equals(b)); // True
У програмском језику C се за поређење стрингова користи функција strcmp(),
јер == упоређује адресе у меморији:
char *a = "test";
char *b = "test";
if (strcmp(a, b) == 0)
printf("Jednaki su.\n");
У C#-у, оба начина упоређују садржај, али Equals() омогућава и „културно
осетљива” поређења и поређења са додатним опцијама (StringComparison).
Методе класе String омогућавају једноставну и ефикасну обраду текстуалних
података. У реалним апликацијама, манипулација стринговима је честа потреба –
од валидирања уноса до анализе података. У наредној лекцији биће представљена
моћна техника рада са стринговима – регуларни изрази, који омогућавају прецизно
дефинисање шаблона за претрагу и проверу текста.