You are on page 1of 7

iruri de caractere

Pentru reprezentarea irurilor de caractere, n limbajul C#, tipul de date utilizat este clasa
System.String (sau aliasul string). Se definesc dou tipuri de iruri:

regulate

de tip Verbatim

Tipul regulat conine ntre ghilimele zero sau mai multe caractere, inclusiv secvene escape.

Limbajul C# introduce, pe lng irurile regulate i cele de tip verbatim. n cazul n care folosim multe
secvene escape, putem utiliza irurile verbatim. Aceste iruri se folosesc n special n cazul n care
dorim s facem referiri la fiiere, la prelucrarea lor, la regitri. Un astfel de ir ncepe cu simbolul @
naintea ghilimelelor de nceput.
Exemplu:
namespace Stringuri
{
class Program
{
static void Main(string[] args)
{
string a = "un sir de caractere";
string b = "linia unu \nlinia doi";
string c = @"linia unu
linia doi";
string d = "c:\\exemple\\unu.cs";
string e = @"c:\exemple\unu.cs";
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
Console.WriteLine(d);
Console.WriteLine(e);
Console.ReadLine();
Console.ReadLine();
}
}
}

Secvenele escape permit reprezentarea caracterelor care nu au reprezentare grafic precum i


reprezentarea unor caractere speciale: backslash, caracterul apostrof, etc.

Concatenarea irurilor de caractere


Pentru a concatena iruri de caractere folosim operatorul +
Exemplu:

Compararea irurilor de caractere


Pentru a compara dou iruri de caractere vom utiliza operatorii == i !=.
Definiie: dou iruri se consider egale dac sunt amndou null, sau dac amndou au aceeai
lungime i pe fiecare poziie au caractere respectiv identice. n caz contrar irurile se consider diferite.
Exemplu: Exemplul urmtor demonstraz c operatorul == este definit pentru a compara valoarea
obiectelor string i nu referina lor
namespace ComparareStringuri
{
class Program
{
static void Main(string[] args)
{
string a = "Invat limbajul C#";
string b = "Invat " + "limbajul ";
b += "C#";
Console.WriteLine("a='{0}'", a);
Console.WriteLine("b='{0}'", b);
Console.WriteLine("a == b {0}", a == b);
Console.WriteLine("(object)a == b {0}", (object)a == b);
Console.ReadLine();
}
}
}

Funcii importante pentru iruri


Clasa String pune la dispoziia utilizatorului mai multe metode i proprieti care permit prelucrarea
irurilor de caractere. Dintre acestea amintim:

metode de comparare:
Compare
CompareOrdinal
CompareTo

metode pentru cutare:


EndsWith
StartsWith
IndexOf
LastIndexOf
metode care permit modificarea irului curent prin obinerea unui nou ir:
Concat
CopyTo
Insert
Join
PadLeft
PadRight
Remove
Replace
Split
Substring
ToLower
ToUpper
Trim
TrimEnd
TrimStart

Proprietatea Length am folosit-o pe parcursul acestei lucrri i, dup cum tim returneaz un ntreg care
reprezint lungimea (numrul de caractere) irului.

Tabelul de mai jos prezint cteva dintre funciile (metodele) clasei String

using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;

namespace Stringuri
{
class Program
{
static void Main(string[] args)
{
string a = "Invat limbajul ";
string b = "C#";
string c;
Console.WriteLine("a = '{0}'", a);
Console.WriteLine("b = '{0}'", b);
c = string.Concat(a, b);
Console.WriteLine("string.Concat(a, b) = \"{0}\"", c);
Console.WriteLine("a.IndexOf(\"v\") = {0}",
Convert.ToString(a.IndexOf("v")));
Console.WriteLine("a.IndexOf(\"mba\") = {0}",
Convert.ToString(a.IndexOf("mba")));
Console.WriteLine("a.Insert(6, \"de zor \") = {0}", a.Insert(6,"de zor
"));
Console.WriteLine("a.Remove(5, 7) = {0}", a.Remove(5, 7));
Console.WriteLine("a.Replace(\"limbajul \", \"la informatica.\")= {0}",
a.Replace("limbajul ", "la informatica."));
Console.WriteLine("a.Substring(6) = {0}", a.Substring(6));
Console.WriteLine("a.Substring(10, 3) = {0}", a.Substring(10,3));
Console.WriteLine("a.ToLower() = {0}", a.ToLower());

Console.WriteLine("a.ToUpper() = {0}", a.ToUpper());


Console.WriteLine("In final a={0}", a);
string d = " Ana are mere. ";
Console.WriteLine("d = {0}", d);
Console.WriteLine("d.Trim() = {0}", d.Trim());
Console.ReadLine();
}
}
}
Exemplu: Programul urmtor contorizeaz majusculele dintr-un text.
namespace Stringuri
{
class Program
{
static void Main(string[] args)
{
int i, nrm = 0;
string text = System.Console.ReadLine();
for (i = 0; i < text.Length; i++)
if (text[i] >= 'A' && text[i] <= 'Z') nrm++;
Console.WriteLine("numarul de majuscule este=" + nrm);
Console.ReadLine();
}
}
}
Exemplu: S se verifice dac cuvintele s1 i s2 citite de la tastatur au aceeai textur. Dou cuvinte au
aceeai textur dac au aceeai lungime i toate caracterele corespondente au acelai tip. Nu se face
distincie ntre litere mari, litere mici.
Ex : acum i elev au aceeai textur (vocal consoan vocal consoan)
namespace Stringuri
{
class Program
{
//aceasta functie verifica daca caracterul x apare in sirul p
//este simularea functiei strchr din C++
private static bool strchr(string p, char x)
{
for (int i = 0; i < p.Length; i++)
if (p[i] == x) return true;
return false;
}
static void Main()
{
String s1 = Console.ReadLine();
String s2 = Console.ReadLine();
String v = string.Copy("aeiouAEIOU"); //vocalele mici si mari
bool textura = true;
int i;
if (s1.Length != s2.Length) textura = false;
else
{

for (i = 0; i < s1.Length; i++)


if (strchr(v, s1[i]) && !strchr(v, s2[i]) || !strchr(v,s1[i]) &&
strchr(v, s2[i]))
textura = false;
}
if (textura) Console.WriteLine("Au aceeasi textura");
else Console.WriteLine("Nu au aceeasi textura");
Console.ReadLine();
}
}
}
Exemplu: Folosind metoda Split, s se numere cuvintele unui text tiind c acestea sunt separate printrun singur separator din mulimea { ' ', ',', ';'}.
namespace Stringuri
{
class Program
{
static void Main()
{
String s = "Metoda Split(),nu face gruparea mai multor;separatori";
char[] x = { ' ', ',', ';' };
String[] cuvant = s.Split(x);
int nrcuv = 0;
for (int i = 0; i < cuvant.Length; i++)
{
Console.WriteLine(cuvant[i]);
nrcuv++;
}
Console.WriteLine("Textul contine {0} cuvinte.",nrcuv);
Console.ReadLine();
}
}
}
Metoda Split() nu face gruparea mai multor separatori, lucru care ar fi de dorit. Pentru aceasta se
folosesc expresii regulate. Expresiile regulate reprezint o metod extrem de util pentru a opera
cutri/nlocuiri pe text.
Expresiile regulate se gasesc in clasa Regex din spatiul de nume System.Text.RegularExpressions.
Exemplu:
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Text.RegularExpressions;

//trebuie adaugata in program

namespace Stringuri
{
class Program
{
static void Main()
{

String s = "Expresiile regulate; , reprezinta o metoda extrem de facila


de a opera cautari,,,si
nlocuiri pe text. ";
//separator: virgula, spatiu sau punct si virgula, unul sau mai multe,
orice combinatie
Regex regex = new Regex("[, ;]+"); //se creeaza expresia regulata
String[] cuvant = regex.Split(s); //folosind aceasta expresie se separa
textul in cuvinte
for (int i = 0; i < cuvant.Length; i++)
Console.WriteLine(cuvant[i]);
Console.ReadLine();
}
}
}