Programujeme v jazyku C# - Diel 19. - Strings IV.

Michal Čižmár  /  30. 03. 2005, 00:00

Aby nemusel vzniknúť ďalší článok o Stringoch, obsahuje tento diel veľa príkladov a minimum textu. Aj tak sa mi podarilo pokryť len hlavné možnosti pre prácu s textovými reťazcami. Odporúčam stiahnuť všetky príklady a postupne si ich odskúšať.

>>Vkladanie podreťazcov

Príklad 19.1

//--------------------------------------------------
using
System;
class
MainClass
{
     public static void Main()
    {
          string text = " Ahoj ako sa mas?";
          text = text.Insert(13,"dnes ");
          Console.WriteLine(text);
     }
}

//--------------------------------------------------

Príklad na stiahnutie:
www.inet.sk/download/user/Priklad19.1_VlozeniePodretazca.zip


Program vypíše : „Ahoj ako sa dnes mas?“. Takýmto spôsobom môžete jednoducho vkladať text do reťazca, pričom sa neprepíše text na zvolenej začiatočnej pozícii (v príklade 19.1 to bolo 13) ale sa pekne odsunie na strany, aby urobil miesto vkladanému textu.

>>Odstránenie časti reťazca

Príklad 19.2

//--------------------------------------------------
using
System;
class
MainClass
{
      public static void Main()
     {
           string text = " Dolly ma malu ovecku";
           int index = text.IndexOf("malu");
           text = text.Remove(index,5);

          Console.WriteLine(text);
    }
}
//--------------------------------------------------
Príklad na stiahnutie:
www.inet.sk/download/user/Priklad19.2_OdstraneniePodretazca.zip


Odporúčam aby ste si teraz pozreli príklad z minulého článku : príklad 18.3. Je podobný tomuto hore. Rozdiel je v tom, že v príklade 18.3 bola výstupom funkcie Substring() len vybraná časť reťazca, zatiaľ čo výstupom funkcie Remove() je celý reťazec okrem vybranej časti.

>>Formátované vytváranie reťazcov

Príklad 19.3

//--------------------------------------------------
using
System;
using
System.Globalization;
class
MainClass
{
      public static void Main()
     {
          int cislo = 19;
          string text1 = "Toto je clanok cislo :";
          string format = "{0} {1}";
          string text = String.Format(format,text1,cislo);
         // to iste
         //string text = String.Format("{0} {1}",text1,cislo);

         Console.WriteLine(text);

         decimal CisS_Bodkou = 23.3216546854M;
         text = String.Format("{0:N3}",CisS_Bodkou);
         Console.WriteLine(text);

         string cena = String.Format("{0:C}",19.90);
         Console.WriteLine(cena);
 
         DateTime dt = DateTime.Now; // aktualny cas
         Console.WriteLine("{0}",dt);
         Console.WriteLine("{0:Y}",dt);
 
         string vlastnyFormat =
         String.Format("{0:0.00'Korun'}",22.756);
         Console.WriteLine(vlastnyFormat);
   }
}

//--------------------------------------------------

Príklad na stiahnutie:
www.inet.sk/d
ownload/user/Priklad19.3_Formatovanie.zip


Formátovanie sa robí veľmi podobným spôsobom ako pri vypisovaní na obrazovku pomocou funkcie Cosnole.WriteLine(). Rozdiel je v tom, že daný text „akoby na vypísanie“ sa uloží do reťazca. Pritom môžete použiť rôzne modifikátory formátu.

Ako prvý príklad som použil modifikátor {0:N3}. Ten znamená , že chcete použiť číslo len s troma desatinnými miestami. Ďalej {0:C} spôsobí, že sa za číslo uloží aj značka peňažnej meny, podľa toho akú krajinu máte nastavenú pod operačným systémom (napr. pod Windowsom).

V tretej časti vidíte ako jednoducho môžete v programe zistiť aktuálny čas. Ten môžete tak isto modifikovať, podľa toho aký formát vám vyhovuje. Takýchto modifikátorov existuje viacero, ak vás zaujali a chceli by ste si o nich vyhľadať viac, odporúčam vám nainštalovať si SDK pre .NET.

Na konci programu je ukázané, ako si môžete vytvoriť vlastný typ formátovania textu. Myslím si, že z príkladu je to jasné.

>>StringBuilder

Je to “súrodenec“ Stringov. Umožňuje podobné veci ako jednoduché Stringy, ale je efektívnejší. Na druhej strane je ochudobnený o niektoré funkcie, ktoré majú Stringy.
Dôležitá poznámka
: Na rozdiel od Stringov je text v StringBuilder priamo modifikovateľný a nie statický. Uvidíte na príklade.

Príklad 19.4

//--------------------------------------------------
using
System;
using
System.Text;
class
MainClass
{
      public static void Main()
     {
           StringBuilder str new StringBuilder("Doly ma ");

           str.Append("malu ovecku");
           str.Insert(0,"Text: ");
           str.Replace(" ","_");

           int index = str.ToString().IndexOf("ovecku");

           Console.WriteLine(str);
           Console.WriteLine("Slovo ovecka je na pozicii: {0}",index);
     }
}

//--------------------------------------------------

Príklad na stiahnutie: www.inet.sk/download/user/Priklad19.4_StringBuilder.zip

Ak je vám do teraz všetko jasné, tak ste si hneď všimli, že str.Replace() by u Stringov nefungovalo a museli by sme zachytiť výstup funkcie, tak ako to bolo vysvetlené v článku Strings I. Všimnite si ako sa vytvýrajú reťazce pomocou StringBuilder hneď na začiatku príkladu.

Ďalej na príklade vidieť, že StringBuilder nemá také funkcie ako napr. IndexOf() a keď ich potrebujete, musíte najprv použiť funkciu ToString().

>>Čo bude nabudúce?

Ešte presne neviem, ale Stringy to už nebudú. Pokúsim, sa rozobrať zas nejakú zaujímavú tému programovania v C#. Ak máte nejaké nápady, aká téma by bola teraz naozaj vhodná, tak prosím napíšte do diskusie.

>>Predchádzajúce diely
Programujeme v jazyku C# - Diel 17. - Strings II.
Programujeme v jazyku C# - Diel 16. - Strings I.
Programujeme v jazyku C# - Diel 15. - MIX zaujímavostí III.
Programujeme v jazyku C# - Diel 14. - MIX zaujímavostí II.

Michal Čižmár

micitn@orangemail.sk





Neprehliadnite: