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