luni, 25 ianuarie 2016

C#13 Operații cu siruri de caractere și fișiere text

Manevrarea stringurilor

Tipul string este un alias pentru clasa System.String.  Obiectele de tip string încapsulează un șir de caractere în format Unicode. Ca majoritatea obiectelor, stringurile încapsulează  și metode proprii nestatice. Cu aceste metode lucrăm pentru a manipula obiectele de tip șir: copiere, trunchiere, concatenare, găsire și creare subșir, separarea unui string în mai multe substringuri în funcție de apariția unor separatori, transformare în majuscule/minuscule, etc.  Apelul unei metode de acest gen se face după sintaxa uzuală: 

numeSir.NumeMetoda. 

 Obiectele string sunt read only. Întotdeauna se va obține un șir nou în urma modificării unui șir. 

Operații cu fișiere text


 Citirea  și scrierea în fișiere este realizată ca în C++, sub formă de fluxuri de intrare/ieșire (stream-uri). Particularitatea stream-urilor este aceea că nu pot manipula decât șiruri de caractere (string-uri). 
Spre deosebire de C++, în C# nu există operatorii >>  și <<.

Se folosesc în schimb obiecte de tipul StreamReader (pentru stream de citire) și StreamWriter (pentru stream de scriere).


Exemplul care urmează implementează diverse operații cu șiruri C#, inclusiv funcția Split, și operații de intrare/ieșire cu fișiere text.


namespace StringuriSiFisiereText
{
    class Program
    {
        static void Main()
        {
            string s1 = "Salut", s2 = "salut";
            if (s1 != s2)
                Console.WriteLine("s1!=s2");
            Console.WriteLine(s2.ToUpper());    //afiseza SALUT. metoda ToUpper face majuscule
            s1 += s2;
            Console.WriteLine(s1);              //afiseaza Salutsalut
            string s = s1.Insert(5, " ");          // metoda Insert inserează un caracter pe poziția specificată
            Console.WriteLine(s);               //afiseza Salut salut
            s = s.Substring(6, 3);                  // metoda Substring decupează un subșir din locul specificat
            Console.WriteLine(s);               //afiseaza sal
            // citirea unui sir de numere separate prin spatii de la tastatura
            // metoda Split a obiectelor string
            //metoda Parse a tipurilor numerice pentru conversie din string
            string linie = Console.ReadLine();
            string[] subsiruri = linie.Split(' ');  //metoda Split creează un tablou de șiruri

                                                                  //în fincție de apariția separatorilor specificați, aici spațiu.
            int nr;
            foreach (string subsir in subsiruri)
            {
                nr = int.Parse(subsir);   //convertește în numere
                Console.Write(nr + "...");
            }
            //deschidere fisiere de intrare si  iesire
            StreamReader fin = new StreamReader("numere.in"); 
            // fisierele se gasesc in
            // subdirectorul /bin/Debug al directorului
            // care contine programul sursa
            StreamWriter fout = new StreamWriter("numere.out");
            string articol=null;
            string[] campuri=null;
            int numar;
            //citeste cate un articol = linie din fisier
            //pana la sfarsitul fisierului
            while ((articol = fin.ReadLine()) != null)
            {
                campuri = articol.Split(' '); //desparte linia in subsiruri
                foreach (string camp in campuri)
                {
                    if (camp != "") //subsirurile vide aparar daca sunt mai multi delimitatori unul dupa altul
                    {
                        numar = int.Parse(camp); //obtine un numar
                        fout.Write("{0,-5}", numar);   //scriere cu format. Aliniere la stânga, marime câmp= 5
                        Console.WriteLine("{0}", numar);
                    }
                }
                fout.WriteLine(); //scrie sfarsit de linie
            }
            fin.Close();
            fout.Close();
            Console.ReadKey();
        }
    }
}

 

 

 


Niciun comentariu:

Trimiteți un comentariu