Prelegeri pe c #

Mai întâi de toate, să răspundem la întrebare, seria de caractere C # dă șirul C terminând cu zero? Răspunsul este nu, nu. Matricea char [] este o matrice obișnuită. Mai mult, nu poate fi inițializată cu un șir de caractere, așa cum este permis în C ++. Constanta specificând șirul de caractere aparține clasei String, iar C # nu definește conversiile reciproce între clasele String și Char [], chiar și cele explicite. Clasa String are totuși o metodă dinamică ToCharArray care specifică o conversie similară. De asemenea, este posibil ca caracterele de caractere să fie caractere personalizate într-o serie de caractere. Voi da un exemplu:







public void TestCharArAndString ()

// char [] strM1 = "Bună ziua, lume!";

// eroare: nici o conversie a șirului de clasă la clasa char []

string hello = "Bună ziua, pace!";

char [] strM1 = hello.ToCharArray ();

char [] Lumea = noul char [3];

În exemplul nostru, o parte din strM1 este copiată în lume. În acest proces, metoda solicită procedura PrintCharAr din clasa Testing, care imprimă o serie de caractere ca un șir. Iată textul ei:

void PrintCharAr (numele șirului, char [] ar)

pentru (int i = 0; i

Metoda ToCharArray vă permite să convertiți un șir într-o serie de caractere. Din păcate, operația inversă nu este determinată, deoarece metoda ToString, care, desigur, au toate obiectele de clasa Char [], imprima informații despre clasa, nu conținutul matrice. Situația este ușor de rezolvat prin scrierea unei proceduri adecvate. Iată textul acestei proceduri CharArrayToString, numit în exemplul nostru de testare:

șir CharArrayToString (char [] ar)

pentru (int i = 0; i

Clasa Char [], precum și orice clasă de matrice în C #, este moștenitorul nu numai al clasei Object, dar, de asemenea, de clasa Array, și, prin urmare, are toate metoda clasei părinte, discutată în detaliu în capitolul anterior. Are metode specifice care vă permit să efectuați operații pe șiruri de caractere,

int IndexOfStr (caracter [] s1, char [] s2)

// returnează indexul primei apariții a subrecursului s2 în

int i = 0, j = 0, n = s1.Lungime-s2.Lungime; bool găsit = fals;

în timp ce ((i<=n) && !found)

Console.WriteLine ("Indicele primei apariții a ochiului în

În această procedură, metodele standard ale clasei Array sunt utilizate mai întâi pentru a determina indicele apariției unui caracter într-un șir și apoi metoda creată

IndexOfStr pentru a determina indicele primei apariții a unui subrevers. Corectitudinea metodei este verificată pe linii diferite. Iată rezultatele muncii sale.

Fig. 13.3. Indicii de apariție a unui substring într-un șir

Există un tip de caractere în C #

În C #, indicatorii sunt permise în blocuri marcate ca fiind nesigure. Teoretic, în astfel de blocuri este posibil să se declare o variabilă de tip Char *, dar totuși nu va fi posibil să scrieți procedura de copiere a liniilor la fel de scurte ca în C ++. Trebuie să luați în considerare corect faptul că în liniile C # de tip char * nu se recomandă utilizarea acestuia.

14. Prelegere: String C #. String și StringBuilder

În prelegerea precedentă, am vorbit despre un caracter de caractere și caractere de caractere de lungime constantă, date de o serie de caractere. Tipul principal pentru lucrul cu șiruri este tipul de șir, care specifică șiruri de lungime variabilă. Clasa String în C # se referă la tipurile de referință. Deasupra rândurilor - obiecte din această clasă - este definită o gamă largă de operații, care corespund conceptului modern de modul în care ar trebui construit un tip de șir.

• un caracter a repetat un număr predeterminat de ori;

• matrice de caractere char [];

• părți ale matricei de caractere.

public void TestDeclStrings ()

șir lume = "Lumea";

// șir s1 = șir nou ("s1");

// șir s2 = șir nou ();

string sssss = șir nou ('s', 5);

char [] da = "Da" .ToCharArray ();

string stryes = șir nou (da);

string strye = șir nou (da, 0,2);

Console.WriteLine ("world =; sssss =; stryes =;" +

"strye =", lume, sssss, stryes, strye);

Obiectul mondial a fost creat fără un apel explicit către constructor, iar obiectele sssss, stryes, strye au fost create de diferiți constructori ai clasei String.







Operații de șir

Următoarele operații sunt definite pe linii:

• două operațiuni de verificare a echivalenței (= =) și (! =);

• concatenarea sau concatenarea șirului (+);

Spre deosebire de alte tipuri de referință, operațiile care verifică echivalența compara valorile șirului, nu referințe. Aceste operațiuni se efectuează atât pe tipuri semnificative.

Operația binară "+" concatetează două linii, atribuind a doua linie la coada primei.

Abilitatea de a lua un index atunci când lucrați cu șiruri reflectă faptul că un șir poate fi tratat ca o matrice și poate fi ușor obținut cu fiecare dintre simbolurile sale. Fiecare caracter din șir este char, care este numai pentru citire, dar nu pentru scriere.

Iată un exemplu în care operațiile de mai sus sunt efectuate pe linii:

public void TestOpers ()

// operațiuni pe linii

șir s1 = "ABC", s2 = "CDE";

șirul s3 = s1 + s2;

caracterele ch1 = s1 [0], ch2 = s2 [0];

Console.WriteLine ("s1 =, s2 =, b1 =," +

"ch1 =, ch2 =", s1, s2, b1, ch1, ch2);

Console.WriteLine ("s1 =, s2 =, b1 =," +

"ch1 =, ch2 =", s1, s2, b1, ch1, ch2);

Fără constante nu se poate face. În C #, există două tipuri de constante șir:

• Constante regulate care reprezintă un șir de caractere încadrate în ghilimele;

• @ -constantele date de constanta obisnuita cu semnul precedent @.

În constantele obișnuite, unele personaje sunt interpretate într-un mod special. Acest lucru se datorează în primul rând faptului că este necesar să se poată specifica caractere netipărite într-un șir, cum ar fi, de exemplu, un caracter de tabulare. Este nevoie să specificați caracterele după codul lor - sub formă de secvențe de evacuare. Pentru toate aceste scopuri, se folosește o combinație de caractere începând cu caracterul "" - coloana vertebrală

facilitate. De exemplu, o pereche de caractere: „\ n“, „\ t“, „“, „“ „definesc, respectiv, simbolul tranziției la o nouă linie, un caracter filă, un simbol al însuși backslash citat de caractere introdus în linie, dar nu semnalul său . sfârșitul combinației „\ xNNNN“ setează un simbol definit de codul hexazecimal NNNN cu toate că astfel de probleme care apar în mod firesc, uneori, au dezavantaje :. de exemplu, atunci când se stabilesc constantele care definesc calea către fișierul, este necesar de fiecare dată pentru a dubla caracterul backslash este una dintre cele mai. motivele pentru care a apărut @ -const Antes.

În @ -constante, toate simbolurile sunt tratate în deplină conformitate cu imaginea lor. Prin urmare, calea către fișier ar trebui să fie setată la @ -constant. Singura problemă în astfel de cazuri este modul de a seta caracterul de cotație astfel încât să nu fie perceput ca sfârșitul constantei în sine. Soluția este de a dubla simbolul. Iată câteva exemple relevante:

// Două tipuri de constante

Console.WriteLine ("s1 =, s2 =, b1 =", s1, s2, b1);

Console.WriteLine ("s1 =, s2 =, b1 =", s1, s2, b1);

Console.WriteLine ("s1 =, s2 =, b1 =", s1, s2, b1);

Priviți rezultatele fragmentelor de coduri obținute la apelarea procedurilor TestDeclStrings și TestOpers.

String de clasă neschimbător

În C #, există conceptul unei clase imuabile. Pentru o astfel de clasă, nu puteți modifica valoarea unui obiect atunci când îi apelați metodele. Metodele dinamice pot crea un obiect nou, dar nu pot schimba valoarea unui obiect existent.

s1 = "Zenon"; ch1 = s1 [0];

Proprietăți și metode statice ale clasei String

Tabelul 14.1. Metode statice și proprietăți ale clasei String

s = șir.Format (ci, "Total:", 77,77);

Fig. 14.2. Rezultatele metodei Format

Alăturați-vă și împărțiți metodele

Metodele Join și Split efectuează transformări inverse reciproce pe șirul de text. Metoda dinamică Split vă permite să analizați textul pe elemente. Metoda de conectare statică efectuează o operație inversă, colectând un rând de elemente.

Textul specificat de un șir este adesea un set de elemente structurate - paragrafe, propoziții, cuvinte, expresii de bracket etc. Când lucrați cu acest text, trebuie să îl împărțiți în elemente folosind delimitatori de elemente speciale - acestea pot fi spații, paranteze, semne de punctuație. Probleme practice similare apar în mod constant atunci când se lucrează cu texte structurate. Metodele de Split și Join facilitează rezolvarea acestor probleme.

Metoda dinamică Split, ca de obicei, este supraîncărcat. Implementarea cea mai frecvent utilizată are următoarea sintaxă:

șir public [] Split (params char [])

Intrarea la metoda Split este trecută cu una sau mai multe caractere interpretate ca delimitatori. Obiectul șir care a numit metoda este împărțit în substringuri care sunt delimitate de aceste delimitatoare. Din aceste substringuri, se creează o matrice, care este returnată ca rezultat al metodei. O altă implementare vă permite să limitați numărul elementelor din matricea returnată.

Sintaxa metodei Static Join:

șir public static Alăturați-vă (delimitatori de șir, elemente de șir [])

Ca rezultat, metoda returnează un șir obținut prin concatenarea elementelor din matricea elementelor, între care este inserat șirul de delimitare a delimitatorilor. De regulă, linia delimitatorilor constă dintr-un caracter care împarte elementele matricei de elemente în rândul rezultat; dar în unele cazuri, delimitatorul poate fi un șir de mai multe caractere.

Să luăm în considerare exemple de aplicare a acestor metode. În prima dintre acestea, linia reprezintă o propoziție complexă, care este împărțită în propoziții simple. În a doua teză este împărțită în cuvinte. Apoi, asamblarea inversă a textului parsat este făcută. Iată codul pentru procedura corespunzătoare:

public void TestSplitAndJoin ()

string txt = "Și aceasta este grâul, care este într-un dulap închis

stocate "+" în casa pe care Jack a construit-o! ";

Console.WriteLine ("Divizarea textului în propoziții simple:");

string [] SimpleSentences, Cuvinte;

// dimensiunea matricelor SimpleSentences și Words

// setează automat în funcție de

// dimensiunea matricei returnată de metoda Split







Articole similare

Trimiteți-le prietenilor: