Методи за рад са стринговима¶
Стрингови (ниске) су као појам објашњени у у Петљином курсу за први разред. Тамо је било речи о двојакој природи стрингова.
Стрингови посматрани као целине су уведени у лекцији Текстуални подаци (стрингови, ниске). У тој лекцији је објашњено свосјтво
Length
и методиSplit
,IndexOf
,Substring
,ToLower
,ToUpper
.Особине стрингова по којима они личе на низове карактера су описане у лекцијама Стринг и низ карактера и Трансформисање стрингова. Ту је било речи о употреби индекса, о понашању стрингова као аргумената метода и о трансформацијама стрингова са освртом на ефикасност.
Препоручујемо читаоцима да се подсете садржаја поменутих лекција из курса за први разред, пре него што наставе са читањем.
Сада ћемо наше разумевање синтаксе и семантике стрингова да употпунимо новим детаљима.
Пре свега напоменимо да је у језику C# кључна реч string
синоним (алијас) за System.String
.
У програмима можемо уместо System.String
да пишемо и само String
, ако пре тога најавимо
употребу именског простора System
наредбом using System;
. Записи string
и System.String
су потпуно равноправни и између њих нема никакве разлике. Ми ћемо у декларацијама стрингова да користимо
запис string
, као и до сада. При томе свакако имамо на уму да су тако декларисани стрингови у ствари
објекти класе String
, која је део стандардне библиотеке .Net.
Начин позивања метода за рад са стринговима
Методи инстанце: Већина метода за рад са стринговима се позива користећи синтаксу облика
s.Metod(...)
, где јеs
неки стринг (а уместо тачкица стоје одговарајући параметри, ако их има). Такви методи нису статички методи (методи класе), него методи инстанце, односно методи појединачног, конкретног стринга. На пример,s2 = s1.ToUpper();
, илиs2 = s1.Trim();
, где суs1
иs2
стрингови. Методе инстанце називамо и нестатичким методима. Код нестатичких метода стрингs1
називамо текућа инстанца стринга.Статички методи: Поред метода инстанце (нестатичких метода), постоје и статички методи, који се позивају користећи синтаксу облика
System.String.Metod(...)
(илиstring.Metod(...)
). Такав је, на пример, методString.Compare
. Ми ћемо користити запис обликаString.Metod(...)
са великимS
, уз употребу наредбеusing System;
на почетку програма. Ово је уобичајени начин писања у C# заједници, а таквим писањем се додатно истиче чињеница да се ради о (статичким) методима класеString
.Двојни методи: Неки методи, попут метода
Equals
могу да се позивају на оба начина (String.Equals(s1, s2)
иs1.Equals(s2)
). Тачније речено, постоји дублет истоимених метода, од којих је један статички, а други нестатички. Наравно, ако користимо нестатички метод (други запис), стрингs1
не сме да будеnull
, јер у противном програм пуца уз порукуNullReferenceException
.
Класа string
(тј. System.String
) има заиста велики број метода, па детаљно описивање сваке
варијанте сваког од тих метода у овом курсу не би имало смисла. Овде ћемо ради прегледа само да набројимо
често коришћене методе и дамо њихове кратке описе.
Преглед често коришћених метода за рад са стринговима¶
Поређење стрингова
String.Equals
: проверава да ли су два стринга једнака (може да поистовети мала и велика слова)String.Compare
: проверава који од два стринга претходи другом у сортираном редоследу (могућа су детаљна подешавања поређења)StartsWith
: проверава да ли текућа инстанца стринга почиње наведеним карактером или стрингомEndsWith
: проверава да ли текућа инстанца стринга завршава наведеним карактером или другим стрингом
Претраживање стрингова
Contains
: проверава да ли текућа инстанца стринга садржи наведени карактер или стрингIndexOf
: враћа позицију првог појављивања датог карактера или стринга у текућој инстанци стрингаIndexOfAny
: враћа позицију првог појављивања било ког од наведених карактера у текућој инстанци стрингаLastIndexOf
: враћа позицију последњег појављивања датог карактера или стринга у текућој инстанци стрингаLastIndexOfAny
: враћа позицију последњег појављивања било ког од наведених карактера у текућој инстанци стринга
Провера постојања садржаја стринга
String.IsNullOrEmpty
: проверава да ли је дати стринг неалоциран (null
) или празанString.IsNullOrWhiteSpace
: проверава да ли је дати стринг неалоциран, празан, или садржи само белине
Tрансформисање стрингова
Insert
: враћа нови стринг, добијен уметањем задатог стринга на одређеној позицији у текућу инстанцу стринга.Remove
: враћа нови стринг, добијен брисањем задатог броја знакова из текуће инстанце стринга, са задате позиције.PadLeft
: враћа нови стринг одређене дужине, добијен допуњавањем слева текуће инстанце стринга размацима или задатим карактером.PadRight
: враћа нови стринг одређене дужине, добијен допуњавањем здесна текуће инстанце стринга размацима или задатим карактером.Substring
: враћа подстринг текуће инстанце стринга, почевши од дате позиције. Може да се зада дужина подстринга, а ако се не зада, подразумева се максимална дужина.Trim
: враћа нови стринг, добијен уклањањем сваког од наведених карактера са почетка и са краја текуће инстанце стринга.TrimEnd
: враћа нови стринг, добијен уклањањем сваког од наведених карактера са краја текуће инстанце стринга.TrimStart
: враћа нови стринг, добијен уклањањем сваког од наведених карактера са почетка текуће инстанце стринга.ToLower
: враћа нови стринг, добијен заменом свих великих слова текуће инстанце стринга у одговарајућа мала слова.ToUpper
: враћа нови стринг, добијен заменом свих малих слова текуће инстанце стринга у одговарајућа велика слова.Replace
: враћа нови стринг, добијен заменом сваког појављивања задатог карактера или стринга у текућој инстанци стринга другим задатим карактером или стрингом.ToCharArray
: копира знакове текуће инстанце стринга у низ карактера (и враћа тај низ као резултат).Split
: враћа низ стрингова који садржи подстрингове текуће инстанце стринга, разграничене елементима датог стринга или низа карактера.String.Join
: враћа стринг, добијен спајањем елемената наведеног низа (или сличне колекције) и убацивањем наведеног знака или стринга на сваком месту спајања, тј. између свака два узастопна елемента који се спајају.
Често је већ из овог кратког описа (па чак и из самог имена метода) јасно чему одређени метод служи и како се користи. У већини случајева ово је сасвим довољно за основну употребу, јер и окружење Visual Studio приликом писања програма пружа изузетно добру подршку у комплетирању имена метода, навођењу параметара и слично. Ако неки метод не можете да нађете кроз помоћ коју нуди развојно окружење, можете да се вратите на ове описе док решавате задатке и овде пронађете метод који вам је потребан у програму. Уколико је за неки од метода потребно више информација, оне лако могу да се пронађу на интернету, нпр. на страници String Class званичне документације библиотеке .NET.
У наставку ћемо нешто детаљније да прођемо кроз наведене методе по групама и да илуструјемо примерима неке могућности и важне начине употребе појединих, одабраних метода.