Cum se configurează smartphone-uri și PC-uri. Portal informativ

Compararea caracterelor în C. Lucrul cu șiruri

Declarații cu șiruri

Un șir în limbajul C este o matrice unidimensională de caractere, ultimul element al căruia este caracterul de sfârșit de linie - zero (un șir terminat cu nul, adică șir terminat cu NULL).

Există trei moduri de a declara o variabilă de tip șir în C, dintre care două inițializează șirul în momentul declarării.

Prima cale:

Declarații de matrice de caractere (nu uitați să adăugați spațiu pentru nulul final):

Caractere;

A doua cale:

Atribuiți unei variabile șir o valoare inițială (în acest caz, compilatorul poate calcula însuși lungimea șirului):

Char s = „Exemplu de inițializare șir”;

În dreapta semnului de atribuire este o constantă șir. Un zero ('\0') este adăugat automat la sfârșitul șirului. Constantele șirurilor de caractere sunt plasate într-o clasă de stocare statică.

A treia cale:

O indicație implicită că o matrice este utilizată. În partea stângă a semnului de atribuire, este indicat un indicator către simbol:

Char *s="A doua opțiune de inițializare";

Variabila s va fi un pointer către locația din RAM în care se află constanta șirului. Această formă de notație are o potențială eroare prin aceea că un pointer către un caracter este adesea denumit șir. Intrarea de mai jos este doar un indicator către un caracter, deoarece nu există spațiu pentru șir:

Char*s;

Introducerea unui șir de la dispozitivul de intrare standard (tastatură)

Există un set de funcții pentru lucrul cu șiruri. Pentru intrarea de la dispozitivul de intrare standard (tastatură), funcțiile de bibliotecă din modulul de intrare/ieșire standard sunt cel mai des utilizate: scanfȘi devine.

Pentru a introduce un șir folosind funcția scanf, folosește formatul « %s» , și rețineți că semnul adresei nu este utilizat înaintea identificatorului de rând « & » , deoarece o matrice unidimensională este deja reprezentată printr-un pointer către începutul său:

scanf("%s", s);

Funcţie devine() citește caractere până când ajunge la un caracter newline. Funcția acceptă toate caracterele până la, dar fără a include caracterul de nouă linie. Un zero final ('\0') este adăugat la sfârșitul șirului. Funcţie devine() pune o secvență de caractere citite de la tastatură într-un parametru șir și returnează un pointer către acel șir (dacă operația a avut succes) sau NULL (în cazul unei erori). În exemplul de mai jos, la finalizarea cu succes a operațiunii, pe ecran vor fi afișate două linii identice:

#include int main() ( char s; char *p; p=gets(s); printf(" \n Șirul %s introdus. ",s); if (p) printf(" \n Șirul %s introdus. ", p); returnează 0;)

În treacăt, observăm că funcția gets este adesea folosită pentru a introduce orice date de la tastatură ca șir în scopul conversiei ulterioare de către funcția sscanf în formatul dorit sau pentru analiza preliminară a datelor de intrare, de exemplu:

#include #include #include int main() (car s; int x, err; do (printf(" \n Introduceți un număr întreg -> "); gets(s); err=sscanf(s, "%d",&x); if (err !=1) printf(" \n Eroare de intrare. "); ) while (err!=1); printf("\n Întregul introdus -> %d", x); return 0; )

Imprimarea șirurilor la ieșirea standard (ecranul monitorului)

Pentru a scoate șiruri de caractere la ieșirea standard (ecran de monitor), puteți utiliza două funcții printfȘi pune. În funcția printf, „%s” este transmis ca format. Comoditatea utilizării acestei funcții constă în faptul că, pe lângă șir, puteți afișa imediat date de alte tipuri. caracteristică caracteristică pune este că după ce linia este scoasă, trecerea la următoarea linie are loc automat.

Funcții șiruri

Pentru a converti șiruri în limbajul C, este furnizată biblioteca de șiruri. Fiecare dintre funcții are propriul format de înregistrare (prototip).

Cele mai utilizate funcții sunt discutate în acest articol. - a citi

Un exemplu de programe (listări) care lucrează cu șiruri

34

--- Tutorial C# --- Șiruri

În ceea ce privește programarea obișnuită, șir tipul de date șir este una dintre cele mai importante din C#. Acest tip definește și acceptă șiruri de caractere. Într-un număr de alte limbaje de programare, un șir este o matrice de caractere. Și în C#, șirurile sunt obiecte. Prin urmare, tipul șir este unul dintre tipurile de referință.

Construcția rândurilor

Cel mai simplu mod de a construi un șir de caractere este să utilizați un șir literal. De exemplu, în următoarea linie de cod, variabilei de referință șir str i se atribuie o referință la un literal șir:

String str = „Exemplu șir”;

În acest caz, variabila str este inițializată cu secvența de caractere „Example String”. Un obiect de tip șir poate fi creat și dintr-o matrice de tip char. De exemplu:

Chararray = ("e", "x", "a", "m", "p", "l", "e"); șir str = șir nou (chararray);

Odată ce un obiect de tip șir a fost creat, acesta poate fi folosit oriunde este necesar un șir de text citat.

Persistența șirului

În mod ciudat, conținutul unui obiect de tip șir nu poate fi modificat. Aceasta înseamnă că, odată ce o secvență de caractere a fost creată, aceasta nu poate fi modificată. Dar această limitare contribuie la o implementare mai eficientă a șirurilor de caractere. Prin urmare, acesta, la prima vedere, un dezavantaj evident se transformă de fapt într-un avantaj. Astfel, dacă un șir este necesar ca o variație a unui șir deja existent, atunci în acest scop ar trebui creat un șir nou care să conțină toate modificările necesare. Și din moment ce obiectele șir neutilizate sunt colectate automat în „gunoi”, atunci nici măcar nu trebuie să vă faceți griji cu privire la soarta șirurilor inutile.

Cu toate acestea, trebuie subliniat faptul că variabilele de referință șir (adică obiecte de tip șir) sunt supuse modificării și, prin urmare, se pot referi la un alt obiect. Dar conținutul obiectului șir în sine nu se schimbă după ce a fost creat.

Luați în considerare un exemplu:

Static void addNewString() ( șir s = „Acesta este accident vascular cerebral”; s = „Acesta este accident vascular cerebral nou”; )

Să compilam aplicația și să încărcăm ansamblul rezultat în utilitarul ildasm.exe. Figura arată codul CIL care va fi generat pentru metoda void addNewString():

Observați apelurile multiple către opcode ldstr (încărcare șir). Acest opcode ldstr în CIL determină încărcarea unui nou obiect șir în heap-ul gestionat. Ca rezultat, obiectul anterior care conținea valoarea „Acesta este lovitura mea” va fi în cele din urmă colectat de gunoi.

Lucrul cu șiruri

În clasă System.String este furnizat un set de metode pentru determinarea lungimii datelor de caractere, căutarea unui subșir în șirul curent, conversia caracterelor din majuscule în litere mici și invers și așa mai departe. Ne vom uita la această clasă mai detaliat în continuare.

Câmp, indexator și proprietatea clasei String

Clasa String are un singur câmp definit:

Șir public static numai pentru citire Gol;

Câmpul Gol denotă un șir gol, adică un șir care nu conține caractere. Aceasta este diferită de o referință String goală, care este pur și simplu făcută la un obiect inexistent.

În plus, clasa String definește un singur indexator numai pentru citire:

Public char this ( obține; )

Acest indexator vă permite să obțineți caracterul la indexul specificat. Indexarea șirurilor, ca și tablourile, începe de la zero. Obiectele String sunt persistente și nu se modifică, așa că are sens ca clasa String să accepte un indexator doar pentru citire.

În cele din urmă, clasa String definește o singură proprietate numai pentru citire:

Public int Lungime ( get; )

Proprietatea Length returnează numărul de caractere dintr-un șir. Exemplul de mai jos arată utilizarea unui indexator și a proprietății Length:

Utilizarea sistemului; Exemplu de clasă ( static void Main() ( string str = "Șir simplu"; // Obține lungimea șirului și al șaselea caracter din șir folosind indexerul Console.WriteLine ("Lungimea șirului este (0), al șaselea caracter este "(1)""" , str.Lungime, str); ) )

Operatori de clasă șiruri

Clasa String supraîncarcă următorii doi operatori: == și !=. Operatorul == este folosit pentru a testa două șiruri de caractere pentru egalitate. Când operatorul == este aplicat referințelor la obiect, de obicei verifică dacă ambele referințe sunt la același obiect. Și când operatorul == este aplicat referințelor de obiecte de tip String, conținutul șirurilor în sine este comparat pentru egalitate. Același lucru este valabil și pentru operatorul !=. Când este aplicat referințelor de obiecte de tip String, conținutul șirurilor în sine este comparat pentru inegalitate. În același timp, alți operatori relaționali, inclusiv =, compară referințele la obiecte de tip String în același mod ca și la obiecte de alte tipuri. Și pentru a verifica dacă un șir este mai mare decât altul, ar trebui să apelați metoda Compare() definită în clasa String.

După cum va deveni clar mai târziu, multe tipuri de comparații de șiruri de caractere folosesc informații culturale. Dar acest lucru nu se aplică operatorilor == și !=. La urma urmei, pur și simplu compară valorile ordinale ale caracterelor din șiruri. (Cu alte cuvinte, ei compară valorile caracterelor binare care nu au fost modificate de normele culturale, adică de locații.) Prin urmare, acești operatori efectuează comparații de șiruri într-o manieră care nu ține seama de majuscule și de cultură.

Metode ale clasei de șiruri

Următorul tabel listează câteva dintre cele mai interesante metode ale acestei clase, grupate după scop:

Metode cu șiruri
Metodă Structură și versiuni supraîncărcate Scop
Comparație de șiruri
Comparaţie() public static int Compare(șir strA, șir strB)

Public static int Compare (șir strA, șir strB, bool ignoreCase)

Public static int Compare(șir strA, șir strB, StringComparison comparisonType)

Public static int Compare (șir strA, șir strB, bool ignoreCase, cultură CultureInfo)

Metodă statică, compară șirul strA cu șirul strB. Returnează pozitiv dacă strA este mai mare decât strB; negativ dacă strA este mai mic decât strB; și zero dacă șirurile strA și strB sunt egale. Comparația ține cont de majuscule și minuscule și sensibilă cultural.

Dacă parametrul ignoreCase este setat la valoarea booleană true, atunci comparația nu ia în considerare diferențele dintre literele mari și mici. În caz contrar, aceste diferențe sunt luate în considerare.

Parametrul comparisonType specifică modul specific în care sunt comparate șirurile. Clasa CultureInfo este definită în spațiul de nume System.Globalization.

public static int Compare (șir strA, int indexA, șir strB, int indexB, int lungime)

Public static int Compare (șir strA, int indexA, șir strB, int indexB, int lungime, bool ignoreCase)

Public static int Compare(șir strA, int indexA, șir strB, int indexB, int lungime, StringComparison comparisonType)

Public static int Compare (șir strA, int indexA, șir strB, int indexB, int lungime, bool ignoreCase, cultură CultureInfo)

Compară părți ale șirurilor strA și strB. Comparația începe cu elementele șir strA și strB și include numărul de caractere specificat de parametrul lungime. Metoda returnează o valoare pozitivă dacă o parte din strA este mai mare decât o parte din strB; o valoare negativă dacă o parte din strA este mai mică decât o parte din strB; și zero dacă părțile comparate ale șirurilor strA și strB sunt egale. Comparația ține cont de majuscule și minuscule și sensibilă cultural.

comparaOrdinal() public static int CompareOrdinal(șir strA, șir strB)

Public static int CompareOrdinal(șir strA, int indexA, șir strB, int indexB, int număr)

Face la fel ca metoda Compare(), dar fără a ține cont de setările locale

Compara cu() public int CompareTo(valoarea obiectului)

Compară șirul de apelare cu reprezentarea șir a obiectului valoare. Returnează o valoare pozitivă dacă șirul de apelare este mai mare decât valoarea șirului; o valoare negativă dacă șirul de apelare este mai mic decât șirul de valoare; și zero dacă șirurile comparate sunt egale

public int CompareTo(string strB)

Compară șirul de apelare cu strB

este egal() public override bool Equals(object object)

Returnează valoarea booleană adevărată dacă șirul de apelare conține aceeași secvență de caractere ca și reprezentarea șir a lui obj. Efectuează o comparație ordinală, ținând cont de majuscule și minuscule, dar insensibilă din punct de vedere cultural

public bool Egal (valoare șir)

Public bool Equals (valoare șir, StringComparison comparisonType)

Returnează valoarea booleană adevărată dacă șirul de apelare conține aceeași secvență de caractere ca și valoarea șirului. Se efectuează o comparație ordinală, ținând cont de majuscule, dar insensibilă din punct de vedere cultural. Parametrul comparisonType definește o modalitate specifică de a compara șirurile

public static bool Egal (șir a, șir b)

Public static bool Equals (șir a, șir b, StringComparison comparisonType)

Returnează boolean adevărat dacă șirul a conține aceeași secvență de caractere ca șirul b. Se efectuează o comparație ordinală, ținând cont de majuscule, dar insensibilă din punct de vedere cultural. Parametrul comparisonType definește o modalitate specifică de a compara șirurile

Concatenarea (conectarea) șirurilor
Concat() public static string Concat(string str0, string str1);

public static string Concat(params string values);

Combină instanțe de șir separate într-un singur șir (concatenare)
Căutați într-un șir
Conține() public bool Conține (valoare șir) O metodă care vă permite să determinați dacă un șir conține un anumit subșir (valoare)
Incepe cu() public bool StartsWith(valoare șir)

Public bool StartsWith(valoare șir, tip de comparație StringComparison)

Returnează valoarea booleană adevărată dacă șirul de apelare începe cu subșirul de valoare. În caz contrar, se returnează valoarea booleană false. Parametrul comparisonType specifică modul în care urmează să fie efectuată căutarea.

Se termină cu() public bool EndsWith(valoare șir)

Public bool EndsWith(valoare șir, tip de comparație StringComparison)

Returnează valoarea booleană adevărată dacă șirul de apelare se termină cu subșirul de valoare. În caz contrar, returnează valoarea booleană false. Parametrul comparisonType definește o anumită metodă de căutare

Index de() public int IndexOf(valoare caracter)

Public int IndexOf(valoare șir)

Găsește prima apariție a unui subșir sau caracter dat într-un șir. Dacă caracterul sau subșirul pe care îl căutați nu este găsit, atunci este returnat -1.

public int IndexOf(valoare caracter, int startIndex)

Public int IndexOf(valoare șir, int startIndex)

Public int IndexOf(valoare caracter, int startIndex, int număr)

Public int IndexOf(valoare șir, int startIndex, int număr)

Returnează indexul primei apariții a caracterului sau a valorii subșirului din șirul de apelare. Căutarea începe de la elementul specificat la index startIndex și se întinde pe numărul de elemente specificat de parametrul count (dacă este specificat). Metoda returnează -1 dacă caracterul sau subșirul căutat nu este găsit

LastIndexOf() Versiunile supraîncărcate sunt similare cu metoda IndexOf().

La fel ca IndexOf, dar găsește ultima apariție a unui caracter sau subșir în loc de prima

IndexOfAny() public int IndexOfAny(char anyOf)

Public int IndexOfAny(char anyOf, int startIndex)

Public int IndexOfAny(char anyOf, int startIndex, int număr)

Returnează indexul primei apariții a oricărui caracter din tabloul anyOf găsit în șirul de apelare. Căutarea începe de la elementul specificat de index startIndex și se întinde pe numărul de elemente specificat de parametrul count (dacă există). Metoda returnează -1 dacă nu se găsește nicio potrivire pentru niciunul dintre caracterele din tabloul anyOf. Căutarea se efectuează în mod ordinal

LastIndexOfAny Versiunile supraîncărcate sunt similare cu metoda IndexOfAny().

Returnează indexul ultimei apariții a oricărui caracter din tabloul anyOf găsit în șirul de apelare

Împărțirea și concatenarea șirurilor
Despică șir public Split(params char separator)

Șir public Split(params char separator, int count)

O metodă care returnează o matrice de șiruri cu subșiruri prezente în această instanță, separate unele de altele prin elemente din matricea de șiruri de caractere specificată.

Prima formă a metodei Split() împarte șirul de apelare în părțile sale componente. Rezultatul este o matrice care conține subșirurile preluate din șirul de apelare. Caracterele care delimitează aceste subșiruri sunt trecute în tabloul separator. Dacă matricea de separare este goală sau se referă la un șir gol, atunci un spațiu este folosit ca separator de subșir. Și în a doua formă a acestei metode, se returnează numărul de subșiruri determinat de parametrul count.

șir public Split (params char separator, opțiuni StringSplitOptions)

Split șir public (separator șir, opțiuni StringSplitOptions)

Split șir public (params char separator, int count, StringSplitOptions opțiuni)

Split șir public (separator șir, număr int, opțiuni StringSplitOptions)

Primele două forme ale metodei Split() împart șirul de apelare în părți și returnează o matrice care conține subșirurile obținute din șirul de apelare. Caracterele care separă aceste subșiruri sunt transmise în tabloul separator. Dacă matricea de separare este goală, atunci un spațiu este folosit ca separator. Și în a treia și a patra formă a acestei metode, se returnează numărul de rânduri, limitat de parametrul count.

Dar în toate formele, parametrul opțiuni specifică o modalitate specifică de a gestiona șirurile goale, care sunt generate atunci când doi delimitatori sunt adiacenți. Enumerarea StringSplitOptions definește doar două valori: Nici unulȘi EliminațiEmptyEntries. Dacă parametrul opțiuni este None, atunci șirurile goale sunt incluse în rezultatul final al împărțirii șirului original. Și dacă parametrul opțiuni este setat la RemoveEmptyEntries, atunci șirurile goale sunt excluse din rezultatul final al împărțirii șirului original.

A te alatura() Join string public static (separator șir, valoare șir)

Unire șir static public (separator șir, valoare șir, int startIndex, int număr)

Construiește un șir nou combinând conținutul unei matrice de șiruri.

Prima formă a metodei Join() returnează un șir format din subșiruri concatenate trecute în tabloul de valori. Cea de-a doua formă returnează, de asemenea, un șir format din subșirurile trecute în tabloul de valori, dar acestea sunt concatenate un anumit număr de contorizări, începând de la elementul matricei de valori. În ambele forme, fiecare linie succesivă este separată de linia anterioară printr-un șir separator specificat de parametrul separator.

Linii de umplere și tăiere
tunde() șir public Trim()

șir public Trim(params char trimChars)

O metodă care vă permite să eliminați toate aparițiile unui set specificat de caractere de la începutul și sfârșitul șirului curent.

Prima formă a metodei Trim() elimină spațiile de început și de final din șirul de apelare. Și a doua formă a acestei metode elimină aparițiile de început și de sfârșit din șirul de caractere de apelare din tabloul trimChars. Ambele forme returnează șirul rezultat.

PadLeft() șir public PadLeft(int totalWidth)

Șir public PadLeft(int totalWidth, char paddingChar)

Vă permite să completați șirul cu caractere din stânga.

Prima formă a metodei PadLeft() inserează spații în partea stângă a șirului de apelare, astfel încât lungimea sa totală să fie egală cu valoarea parametrului totalWidth. În a doua formă a acestei metode, caracterele indicate de parametrul paddingChar sunt introduse în partea stângă a șirului de apelare, astfel încât lungimea sa totală să devină egală cu valoarea parametrului totalWidth. Ambele forme returnează șirul rezultat. Dacă valoarea parametrului totalWidth este mai mică decât lungimea șirului de apelare, atunci este returnată o copie a șirului de apelare nemodificat.

PadRight() Similar cu PadLeft()

Vă permite să completați șirul cu caractere la dreapta.

Inserarea, ștergerea și înlocuirea rândurilor
Introduce() șir public Inserare (int startIndex, valoare șir)

Folosit pentru a insera un șir în altul, unde value este șirul care trebuie inserat în șirul de apelare la index startIndex. Metoda returnează șirul rezultat.

Elimina() șir public Remove(int startIndex)

Șir public Eliminare (int startIndex, int număr)

Folosit pentru a elimina o parte dintr-un șir. În prima formă a metodei Remove(), eliminarea este efectuată începând de la locația specificată de index startIndex și continuând până la sfârșitul șirului. Și în a doua formă a acestei metode, numărul de caractere specificat de parametrul count este eliminat din șir, începând de la locul specificat de indexul startIndex.

A inlocui() șir public Înlocuire (char oldChar, char newChar)

Șir public Înlocuire (șir vechiValoare, șir newValue)

Folosit pentru a înlocui o parte dintr-un șir. Prima formă a metodei Replace() înlocuiește toate aparițiile lui oldChar din șirul de apelare cu newChar. Și în a doua formă a acestei metode, toate aparițiile șirului oldValue din șirul apelant sunt înlocuite cu șirul newValue.

Schimbarea cazului
În sus() șir public ToUpper()

Scrie cu majuscule toate literele din șirul de apelare.

Pentru a reduce() șir public ToLower()

Face toate literele din șirul de apelare cu minuscule.

Obținerea unui subșir dintr-un șir
subșir () șir public Subșir (int startIndex)

Șir public Subșir (int startIndex, int lungime)

În prima formă a metodei Substring(), subșirul este extras din locația indicată de parametrul startIndex până la sfârșitul șirului de apelare. Și în cea de-a doua formă a acestei metode se extrage un subșir, format din numărul de caractere specificat de parametrul lungime, începând de la locul indicat de parametrul startIndex.

Următorul exemplu de program utilizează mai multe dintre metodele de mai sus:

Utilizarea sistemului; folosind System.Collections.Generic; folosind System.Linq; folosind System.Text; namespace ConsoleApplication1 ( clasa Program ( static void Main(string args) ( // Compara primele două șiruri șir s1 = „acesta este un șir"; șir s2 = „acesta este text, acesta este un șir"; if (String.CompareOrdinal (s1, s2) != 0) Console.WriteLine(„Șirurile s1 și s2 nu sunt egale”); if (String.Compare(s1, 0, s2, 13, 10, true) == 0) Console.WriteLine( „Totuși, acestea conțin același text”); // Concatenare șiruri Console.WriteLine(String.Concat("\n" + "Unu, doi ","trei, patru")); // Căutare în șir // Prima apariție de subșir dacă (s2. IndexOf(„acest”) != -1) Console.WriteLine(„Cuvântul \”acest\” a fost găsit în linie, este „+ ”la: (0) poziție”, s2. IndexOf(„this”)); // Ultima apariție a subșirului dacă (s2.LastIndexOf(„this”) != -1) Console.WriteLine(„Ultima apariție a „this” este „ + „la ( 0) poziție", s2.LastIndexOf("this" )); // Căutare din matricea de caractere char myCh = ("S","x","t"); if (s2.IndexOfAny(myCh) != -1) Console.WriteLine("Unul dintre caracterele din tabloul ch "+" găsit în linia curentă la poziţia (0)", s2.IndexOfAny(myCh)); // Stabilește dacă șirul începe cu subșirul dat if (s2.StartsWith("acesta este text") == true) Console.WriteLine("Subșir găsit!"); // Determinați dacă șirul conține un subșir // folosind exemplul de determinare a șirului de sistem de operare al utilizatorului myOS = Environment.OSVersion.ToString(); if (myOS.Contains ("NT 5.1")) Console.WriteLine ("Sistemul dvs. de operare este Windows XP"); else if (myOS.Contains ("NT 6.1")) Console.WriteLine ("Sistemul dvs. de operare este Windows 7"); Console.ReadLine(); ) ) )

Un pic despre compararea șirurilor în C#

Dintre toate operațiunile de procesare a șirurilor de caractere, este probabil cea mai frecventă comparare a unui șir cu altul. Înainte de a analiza oricare dintre metodele de comparare a șirurilor, trebuie subliniate următoarele: compararea șirurilor se poate face în .NET Framework în două moduri principale:

    În primul rând, comparația poate reflecta obiceiurile și normele unui anumit mediu cultural, care sunt adesea setări culturale care intră în vigoare atunci când un program este executat. Acesta este un comportament standard pentru unele, deși nu pentru toate, metodele de comparație.

    Și în al doilea rând, comparația poate fi efectuată indiferent de setările mediului cultural doar pe valorile ordinale ale caracterelor care alcătuiesc șirul. În general, compararea șirurilor de caractere insensibilă din punct de vedere cultural utilizează ordinea lexicografică (și caracteristicile lingvistice) pentru a determina dacă un șir este mai mare decât, mai mic sau egal cu un alt șir. Într-o comparație ordinală, șirurile sunt pur și simplu ordonate pe baza valorii nemodificate a fiecărui caracter.

Din cauza diferențelor în modul în care sunt comparate șirurile între culturi și comparațiile ordinale și a implicațiilor fiecărei astfel de comparații, vă recomandăm insistent să utilizați cele mai bune practici oferite în prezent de Microsoft. La urma urmei, alegerea modului greșit de a compara șirurile poate duce la funcționarea incorectă a programului atunci când acesta este operat într-un mediu diferit de cel în care a fost dezvoltat.

Alegerea modului de comparare a șirurilor de caractere este o decizie foarte importantă. Ca regulă generală, și fără excepție, ar trebui să alegeți o comparație de șiruri sensibilă din punct de vedere cultural dacă aceasta are scopul de a afișa rezultatul utilizatorului (de exemplu, pentru a afișa o serie de șiruri sortate în ordine lexicografică). Dar dacă șirurile conțin informații fixe care nu sunt menite să fie modificate pentru diferențele culturale, cum ar fi un nume de fișier, un cuvânt cheie, o adresă de site web sau o valoare legată de securitate, atunci ar trebui să alegeți o comparație de șiruri ordinale. Desigur, specificul anumitor aplicații dezvoltate va dicta alegerea unui mod adecvat de a compara șirurile de caractere.

Clasa String oferă o varietate de metode de comparare a șirurilor, care sunt enumerate în tabelul de mai sus. Cea mai versatilă dintre ele este metoda Compare(). Vă permite să comparați două șiruri de caractere integral sau parțial, diferențiate de majuscule sau minuscule, într-un mod de comparare determinat de parametrul tip StringComparison, precum și informațiile culturale furnizate de parametrul tip CultureInfo.

Acele supraîncărcări ale metodei Compare() care nu conțin un parametru de tip StringComparison efectuează o comparație a șirurilor de caractere care ține seama de majuscule și cultură. Și în acele variante supraîncărcate care nu conțin un parametru de tip CultureInfo, informațiile de cultură sunt determinate de mediul de rulare curent.

Tipul StringComparison este o enumerare care definește valorile prezentate în tabelul de mai jos. Folosind aceste valori, puteți organiza comparații de șiruri care se potrivesc nevoilor aplicației dvs. Prin urmare, adăugarea unui parametru de tip StringComparison extinde capacitățile metodei Compare() și ale altor metode de comparare, cum ar fi Equals(). De asemenea, face posibilă specificarea fără ambiguitate a modului în care trebuie să fie comparate șirurile.

Din cauza diferențelor dintre comparațiile de șiruri sensibile din punct de vedere cultural și comparațiile ordinale, este important să fii cât mai precis posibil în acest sens.

Valori definite în enumerarea StringComparison
Sens Descriere
CurrentCulture Compararea șirurilor se face folosind setările curente de cultură
CurrentCultureIgnoreCase Compararea șirurilor este efectuată folosind setările curente de cultură, dar nu ține seama de majuscule și minuscule
InvariantCulture Comparația șirurilor se face folosind cele imuabile, adică date universale despre mediul cultural
InvariantCultureIgnoreCase Comparația șirurilor se face folosind cele imuabile, adică date culturale universale și insensibile la majuscule și minuscule
Ordinal Compararea șirurilor se realizează folosind valorile ordinale ale caracterelor din șir. În acest caz, ordinea lexicografică poate fi încălcată, iar convențiile adoptate într-un anumit mediu cultural sunt ignorate.
OrdinalIgnoreCase Compararea șirurilor se realizează folosind valorile ordinale ale caracterelor din șir, dar nu ține seama de majuscule și minuscule

În ambele cazuri, metoda Compare() returnează o valoare negativă dacă primul șir comparat este mai mic decât al doilea; o valoare pozitivă dacă primul șir comparat este mai mare decât al doilea; și în final zero dacă ambele șiruri comparate sunt egale. Deși metoda Compare() returnează zero dacă șirurile comparate sunt egale, în general este mai bine să folosiți metoda Equals() sau operatorul == pentru a determina dacă șirurile de caractere sunt egale.

Faptul este că metoda Compare() determină egalitatea șirurilor comparate pe baza ordinii lor de sortare. De exemplu, dacă șirurile sunt comparate cultural, ambele șiruri pot fi aceleași în ordinea lor de sortare, dar nu sunt în esență egale. În mod implicit, egalitatea șirurilor este determinată în metoda Equals(), pe baza valorilor ordinale ale caracterelor și nu cultural. Prin urmare, în mod implicit, ambele șiruri sunt comparate în această metodă pentru egalitate absolută, caracter cu caracter, similar cu modul în care se face în operatorul ==.

În ciuda versatilității mari a metodei Compare(), pentru o comparație ordinală simplă a șirurilor de caractere, este mai ușor să utilizați metoda CompareOrdinal(). În cele din urmă, rețineți că metoda CompareTo() compară doar șirurile într-o manieră sensibilă din punct de vedere cultural.

Următorul program demonstrează utilizarea metodelor Compare(), Equals(), CompareOrdinal() și a operatorilor == și != pentru a compara șirurile de caractere. Rețineți că primele două exemple de comparație demonstrează în mod clar diferențele dintre comparația de șiruri sensibilă cultural și comparația ordinală engleză:

Utilizarea sistemului; Exemplu de clasă ( static void Main() ( șir str1 = "alfa"; șir str2 = "Alfa"; șir str3 = "Beta"; șir str4 = "alfa"; șir str5 = "alfa, beta"; rezultat int; / / Mai întâi, demonstrați diferența dintre compararea șirurilor sensibile la cultură și rezultatul comparației ordinale = String.Compare(str1, str2, StringComparison.CurrentCulture); Console.Write("Compararea șirurilor sensibile la cultură: "); if (rezultat 0 ) Console .WriteLine(str1 + " este mai mare decât " + str2); altfel Console.WriteLine(str1 + "este " + str2); rezultat = String.Compare(str1, str2, StringComparison.Ordinal); Console.Write("Comparație ordinală linii: "); dacă (rezultatul 0) Console.WriteLine(str1 + " este mai mare decât " + str2); altfel Console.WriteLine(str1 + "este egal cu " + str4); // Utilizați rezultatul metodei CompareOrdinal() = String.CompareOrdinal( str1, str2); Console.Write("Comparați șirurile folosind CompareOrdinal():\n"); if (rezultat 0) Console.WriteLine(str1 + "mai mare decât " + str2); else Console.WriteLine (str 1 + "este egal cu " + str4); Console.WriteLine(); // Determinați egalitatea șirurilor folosind operatorul == // Aceasta este o comparație ordinală a șirurilor de caractere if (str1 == str4) Console.WriteLine(str1 + " == " + str4); // Detectează inegalitatea liniilor folosind operatorul != if(str1 != str3) Console.WriteLine(str1 + " != " + str3); if(str1 != str2) Consola.WriteLine(str1 + " != " + str2); Console.WriteLine(); // Efectuați o comparație ordinală de șiruri care nu ține seama de majuscule, folosind metoda Equals() if(String.Equals(str1, str2, StringComparison.OrdinalIgnoreCase)) Console.WriteLine("Compararea șirurilor folosind metoda Equals() cu parametrul " + " OrdinalIgnoreCase: \n" + str1 + " este egal cu " + str2); Console.WriteLine(); // Comparați părți ale șirurilor de caractere if(String.Compare(str2, 0, str5, 0, 3, StringComparison.CurrentCulture) > 0) ( Console.WriteLine("Compararea șirurilor pe baza culturii curente:" + "\n3 primele caractere a șirului " + str2 + " este mai mare decât primele 3 caractere ale șirului " + str5); ) ) )

Rularea acestui program produce următorul rezultat:

Standardul modern C++ definește o clasă cu funcții și proprietăți (variabile) pentru organizarea muncii cu șiruri de caractere (nu există șiruri de caractere ca atare în limbajul C clasic, există doar tablouri de caractere):

#include

#include

#include

Pentru a lucra cu șiruri, trebuie să includeți și un spațiu de nume standard:

Utilizarea namespace std;

În caz contrar, va trebui să specificați descriptorul de clasă std::string în loc de șir peste tot.

Următorul este un exemplu de program care funcționează cu șir (nu funcționează în vechile compilatoare compatibile cu C!):

#include #include #include folosind namespace std; int main() (șir s = "Test"; s.insert(1,"!"); cout<< s.c_str() << endl; string *s2 = new string("Hello"); s2->erase(s2->end()); cout<< s2->c_str(); cin.get(); returnează 0; )

Principalele caracteristici pe care le are clasa string:

  • inițializare cu o matrice de caractere (un șir încorporat) sau alt obiect de tip string . Tipul încorporat nu are a doua capacitate;
  • copierea unei linii pe alta. Pentru un tip încorporat, trebuie să utilizați funcția strcpy();
  • acces la caracterele individuale ale unui șir pentru citire și scriere. În matricea încorporată, acest lucru se face folosind operația de index sau adresare indirectă folosind un pointer;
  • comparând două șiruri de caractere pentru egalitate. Pentru un tip încorporat sunt folosite funcțiile familiei strcmp();
  • concatenare (concatenare) a două șiruri, dând rezultatul fie ca al treilea șir, fie în locul unuia dintre cele originale. Pentru un tip încorporat, se folosește funcția strcat(), dar pentru a obține rezultatul într-o linie nouă, trebuie să utilizați funcțiile strcpy() și strcat() în secvență și, de asemenea, să aveți grijă de alocarea memoriei;
  • mijloace încorporate pentru determinarea lungimii unui șir (funcții membre ale clasei size() și l ength()). Singura modalitate de a afla lungimea unui șir de tip încorporat este calculând-o cu funcția strlen();
  • capacitatea de a afla dacă un șir este gol.

Să aruncăm o privire mai atentă la aceste caracteristici de bază.

Inițializare șir când descrie şi lungimea șirului(fără a include terminatorul nul de terminare):

String st("Șirul meu\n"); cout<< "Длина " << st << ": " << st.size() << " символов, включая символ новой строки\n";

Șirul poate fi, de asemenea, gol:

Str 2;

Pentru a verifica dacă este șirul gol, puteți compara lungimea sa cu 0:

dacă (!st.size()) // gol

sau utilizați metoda empty(), care returnează true pentru un șir gol și false pentru unul nevid:

if (st.empty()) // gol

A treia formă de creare a șirului inițializează un obiect de tip șir cu un alt obiect de același tip:

St3 st3(st);

Șirul st3 este inițializat cu șirul st . Cum ne putem asigura că acestea corzile se potrivesc? Să folosim operatorul de comparație (==):

Dacă (st == st3) // inițializarea a reușit

Cum copiați o linie pe alta? Cu operatorul obișnuit de atribuire:

st2 = st3; // copiați st3 în st2

Pentru concatenare de șiruri se utilizează operatorul de adăugare (+) sau operatorul de adăugare-alocare (+=). Să fie date două linii:

String s1 ("bună ziua, "); șir s2(„lume\n”);

Putem obține un al treilea șir format din concatenarea primelor două, astfel:

Șirul s3 = s1 + s2;

Dacă vrem să adăugăm s2 la sfârșitul lui s1, trebuie să scriem:

S1 += s2;

Operația de adăugare poate concatena obiecte de clasă şir nu numai între ele, ci și cu șiruri de tip încorporat. Puteți rescrie exemplul de mai sus, astfel încât caracterele speciale și semnele de punctuație să fie reprezentate de tipul încorporat char * , iar cuvintele semnificative să fie reprezentate de obiecte din șirul clasei:

Const char *pc = ", "; șir s1 ("bună ziua"); șir s2(„lume”); șir s3 = s1 + pc + s2 + "\n"; cout<< endl << s3;

Astfel de expresii funcționează deoarece compilatorul „știe” cum să convertească automat obiectele de tip încorporat în obiecte de tip șir de clasă . De asemenea, este posibil să atribuiți pur și simplu un șir încorporat unui obiect șir:

Șirul s1; const char *pc = "o matrice de caractere"; s1=buc; // dreapta

Transformarea inversă este nu funcționează. Încercarea de a efectua următoarea inițializare a șirurilor de tip încorporat va cauza o eroare de compilare:

Char*str = s1; // eroare de compilare

Pentru a face această conversie, trebuie să apelați în mod explicit funcția membru numită c_str() ("șir C"):

Const char *str = s1.c_str();

Funcția c_str() returnează un pointer către o matrice de caractere care conține șirul obiectului șir, așa cum ar fi în tipul șir încorporat. Cuvântul cheie const aici previne posibilitatea „periculoasă” în mediile vizuale moderne de a modifica direct conținutul unui obiect prin intermediul unui pointer.

LA personaje individuale un obiect de tip string , ca un tip încorporat, poate fi accesat utilizând operația index. De exemplu, iată un fragment de cod care înlocuiește toate punctele cu caractere de subliniere:

String str("www.disney.com"); int size = str.size(); pentru (int i = 0; i< size; i++) if (str[i] == ".") str[ i ] = "_"; cout << str;

Înlocuiește(str.begin(), str.end(), ".", "_");

Adevărat, nu metoda de înlocuire a clasei de șiruri este folosită aici, ci algoritmul cu același nume:

#include

Deoarece obiectul șir se comportă ca un container, i se pot aplica și alți algoritmi. Acest lucru vă permite să rezolvați probleme care nu sunt rezolvate direct de funcțiile clasei șir.

Mai jos este o scurtă descriere a principalelor operatori și funcții ale clasei șir de caractere, linkurile din tabel conduc la descrieri în limba rusă de pe Internet. Pentru o listă mai completă a capabilităților clasei șir, consultați, de exemplu, Wikipedia sau cplusplus.com.

Specificarea caracterelor dintr-un șir

operator=

atribuie valori unui șir

atribui

atribuie caractere unui șir

Accesarea personajelor individuale

la

obținerea caracterului specificat cu verificarea indexului în afara limitelor

operator

obținerea caracterului specificat

față

obținerea primului personaj

înapoi

obținerea ultimului personaj

date

returnează un pointer la primul caracter al unui șir

c_str

se intoarce nemodificabil Matrice de caractere C care conține caracterele șirului

Verificarea capacității șirului

gol

verifică dacă un șir este gol

mărimea
lungime

returnează numărul de caractere dintr-un șir

dimensiune_max

returnează numărul maxim de caractere

rezervă

rezerva spatiu de depozitare

Operații pe un șir

clar

șterge conținutul șirului

introduce

inserarea caracterelor

şterge

eliminarea caracterului

împinge înapoi

adăugarea unui caracter la sfârșitul unui șir

pop_back

elimină ultimul caracter

adăuga

operator+=

adaugă caractere la sfârșitul unui șir

comparaţie

compară două șiruri

a inlocui

înlocuiește fiecare apariție a caracterului specificat

substr

returnează un subșir

copie

copiază caracterele

redimensiona

modifică numărul de caractere stocate

Programatorul spune:

Salut! Am citit articolul tau. Eram foarte trist și amuzant în același timp. Această expresie a ta ucide în special: „Deoarece o variabilă de tip char este adesea folosită ca matrice, numărul de valori posibile este determinat.” 😆 😆 😆
Nu râd de tine. Construirea unui site web este cu adevărat o ispravă. Vreau doar să vă susțin cu sfaturi și să subliniez câteva greșeli.

1. Valoarea unei variabile de tip char este atribuită după cum urmează:

Aici:

Chara = *"A";

Pointerul către matrice este de-adresat și, ca rezultat, valoarea primului element al matricei este returnată, adică. 'A'

2. Reducerea la zero se întâmplă astfel:

Chara = NULL;
char b = ();

//Și așa este șters linia din corpul programului

"" -- acest caracter se numește terminator nul. Este plasat la capătul liniei. Tu însuți, fără să știi, ai umplut matricea s1 din articolul tău cu acest simbol. Dar a fost posibil să se atribuie acest simbol numai elementului zero al matricei.

3. Simțiți-vă liber să utilizați terminologia.
Semnul = este un operator de atribuire.
Semnul * este operația de neadresare.
Mă refer la acest fragment din articol: „Totul s-a dovedit a fi atât de simplu, înainte de semnul = a fost necesar să se pună semnul * și a fost necesar să se declare numărul elementului (zero corespunde primului)”

Nu mă înțelege greșit, articolul în forma sa actuală nu poate exista. Simțiți-vă liber să-l rescrieți.
Ai o mare responsabilitate! Sunt serios. Paginile site-ului dvs. au ajuns în prima pagină a emisiunii Yandex. Mulți oameni au început deja să-ți repete greșelile.

Noroc! O poți face!

:
Știu asta de mult timp, pur și simplu e greu să recitești 200 de articole tot timpul pentru a remedia ceva. Și unele tipuri nepoliticoase scriu în așa fel încât, chiar și știind ce este mai bine de reparat, nu este deloc o vânătoare de reparat.

Voi fi bucuros să corectez alte erori. corectați inexactitățile dacă apar. Apreciez ajutorul vostru. mulțumesc. Știu asta de mult timp, pur și simplu este greu să recitesc 200 de articole tot timpul pentru a remedia ceva. Și unele tipuri nepoliticoase scriu în așa fel încât, chiar și știind ce este mai bine de reparat, nu este deloc o vânătoare de reparat.
Cu caracterul tău b = (); Nu este deloc o resetare. ar verifica cel putin.
dacă vorbim despre caracterul nul „” ; Știam bine când am umplut linia cu ea și scopul a fost să arăt o curățenie reală, și nu vizibilă pentru ochi, pentru că gunoiul intră pe linie, care uneori iese în cale. Ai fi mai atent cu termenii, „simbol de terminare nulă” sau doar „simbol nul”, nu un terminator))) Și simbolul de terminare sună bine.

Modernizez articolul, dar nu voi trece la stilul altcuiva. Dacă cred că un începător înțelege mai bine așa, și nu așa cum vrei tu, atunci o voi lăsa așa. Și tu mă înțelegi corect. Cuvântul „semn” este mult mai ușor de înțeles și de amintit pentru un începător slab decât definiția și numele fiecărui semn. Nu există absolut nicio greșeală în asta, este un semn - un semn. Mai puțin accent pe unul dă mai mult accent pe celălalt.

Voi fi bucuros să corectez alte erori. corectați inexactitățile dacă apar. Apreciez ajutorul vostru. Mulțumiri.

Buna din nou!
vreau să explic. Termenul „zero-terminator” (terminator din limba engleză limitator) a fost folosit de profesorul meu de la universitate. Se pare că e vechea școală!
În ceea ce privește anularea rândurilor.
char b = (); Este într-adevăr o resetare. Întreaga matrice este umplută cu zerouri. Nu mă crede - verifică!
Dacă luăm în considerare un șir în sensul său natural, de zi cu zi, atunci „gol” va fi șirul în care nu există un singur caracter. Prin urmare, în 99,9% din cazuri, este suficient să puneți un caracter nul la început. De obicei, procesarea unui șir merge până la primul caracter nul, iar ce caractere vin după acesta nu mai este important. Am înțeles că ai vrut să resetați linia. Tocmai am decis să ofer o versiune clasică testată în timp.

:
Când „De obicei, procesarea șirurilor ajunge până la primul caracter nul și ce caractere urmează nu mai este important” - da, șirul este resetat la zero
Dacă luăm în considerare „reducerea la zero a tuturor celulelor liniei (despre care am scris)” - nu, nu zero, și chiar și primul caracter nu este zero. Am testat aceasta varianta. MinGW(CodeBlock) - întreaga matrice returnează caracterul „a”
Nu cred că aceasta este o chestiune de controversă.

Ultima actualizare: 31.10.2015

Concatenare

Concatenarea sau concatenarea șirurilor se poate face fie cu operatorul +, fie cu metoda Concat:

String s1 = „bună ziua”; șir s2 = „lume”; șir s3 = s1 + " " + s2; // rezultat: string "hello world" string s4 = String.Concat(s3, "!!!"); // rezultat: șir „bună lume!!!” Consola WriteLine(s4);

Metoda Concat este o metodă statică a clasei String care ia ca parametri două șiruri de caractere. Există și alte versiuni ale metodei care iau un număr diferit de parametri.

Metoda Join poate fi folosită și pentru a concatena șiruri:

String s5 = „măr”; șir s6 = „o zi”; șir s7 = „păstrează”; șir s8 = „doctor”; șir s9 = „departe”; valorile șirului = șir nou ( s5, s6, s7, s8, s9 ); String s10 = String.Join(" ", valori); // rezultat: șirul „un măr pe zi ține un doctor departe”

Metoda Join este, de asemenea, statică. Versiunea metodei folosite mai sus ia doi parametri: un șir delimitator (în acest caz, un spațiu) și o matrice de șiruri care vor fi concatenate și separate de delimitator.

Comparație de șiruri

Pentru a compara șirurile de caractere, utilizați metoda de comparare statică:

String s1 = „bună ziua”; șir s2 = „lume”; int rezultat = String.Compare(s1, s2); dacă (rezultat<0) { Console.WriteLine("Строка s1 перед строкой s2"); } else if (result >0) ( Console.WriteLine("Linia s1 vine după linia s2"); ) else ( Console.WriteLine ("Liniile s1 și s2 sunt identice"); ) // rezultatul va fi "Linia s1 vine înaintea liniei s2"

Această versiune a metodei Compare are două șiruri de caractere și returnează un număr. Dacă primul șir este alfabetic mai mare decât al doilea, atunci este returnat un număr mai mic decât zero. În caz contrar, este returnat un număr mai mare decât zero. Și al treilea caz - dacă șirurile sunt egale, atunci este returnat numărul 0.

În acest caz, deoarece caracterul h este alfabetic mai mare decât caracterul w, prima linie va fi, de asemenea, mai mare.

Căutați într-un șir

Folosind metoda IndexOf, putem determina indexul primei apariții a unui singur caracter sau subșir dintr-un șir:

String s1 = „bună lume”; char ch = "o"; int indexOfChar = s1.IndexOf(ch); // este egal cu 4 Console.WriteLine(indexOfChar); șir subString = „wor”; int indexOfSubstring = s1.IndexOf(subString); // este egal cu 6 Console.WriteLine(indexOfSubstring);

Metoda LastIndexOf funcționează într-un mod similar, găsește doar indexul ultimei apariții a unui caracter sau subșir dintr-un șir.

Un alt grup de metode vă permite să aflați dacă un șir începe sau se termină cu un anumit subșir. Pentru asta sunt metodele StartsWith și EndsWith. De exemplu, avem o sarcină de a elimina toate fișierele cu extensia .exe dintr-un folder:

Calea șirului = @"C:\SomeDir"; fișiere șir = Directory.GetFiles(cale); pentru (int i = 0; i< files.Length; i++) { if(files[i].EndsWith(".exe")) File.Delete(files[i]); }

Divizarea liniei

Cu funcția Split, putem împărți un șir într-o matrice de subșiruri. Ca parametru, funcția Split ia o matrice de caractere sau șiruri de caractere, care vor servi drept separatori. De exemplu, să numărăm numărul de cuvinte dintr-un termen împărțindu-l la caractere cu spații albe:

String text = „Și de aceea s-a întâmplat totul”; șir de cuvinte = text.Split(car nou ( " " )); foreach (șir de caractere în cuvinte) ( Console.WriteLine(s); )

Aceasta nu este cea mai bună modalitate de a împărți după spații, deoarece am putea avea mai multe spații consecutive în șirul de intrare, iar spațiile ar intra și în tabloul final, deci este mai bine să folosiți o versiune diferită a metodei:

String words = text.Split(new char ( " " ), StringSplitOptions.RemoveEmptyEntries);

Al doilea parametru StringSplitOptions.RemoveEmptyEntries spune să eliminați toate subșirurile goale.

Tăierea unei sfori

Pentru a decupa caracterele de început sau de sfârșit, utilizați funcția Trim:

String text = „bună lume”; text = text.Trim(); // rezultat "hello world" text = text.Trim(new char ("d", "h" )); // rezultat „ello lume”

Funcția Trim fără parametri decupează spațiile de început și de final și returnează șirul tăiat. Pentru a specifica în mod explicit caracterele de început și de sfârșit de tăiat, putem trece o matrice din acele caractere funcției.

Această funcție are analogi parțial: funcția TrimStart decupează caracterele de început, iar funcția TrimEnd decupează caracterele de sfârșit.

Funcția Substring vă permite să tăiați o anumită parte a unui șir:

String text = „O zi bună”; // tăiere începând de la al treilea caracter text = text.Substring(2); // rezultat „zi frumoasă” Console.WriteLine(text); // tăiați primul la ultimele două caractere text = text.Substring(0, text.Length - 2); // rezultatul este „bun de” Console.WriteLine(text);

Funcția Substring returnează și șirul tăiat. Ca parametru, prima versiune folosită folosește indexul din care să tăiați șirul. A doua versiune folosește doi parametri - indicele începutului tăierii și lungimea părții tăiate a șirului.

Introduce

Pentru a insera un rând în altul, utilizați funcția Inserare:

String text = „O zi bună”; string subString = „minunat”; text = text.Insert(8, subString); Console.WriteLine(text);

Primul parametru din funcția Insert este indexul la care se inserează subșirul, iar al doilea parametru este subșirul în sine.

Eliminarea rândurilor

Metoda Remove ajută la eliminarea unei părți a unui șir:

String text = „O zi bună”; // indexul ultimului caracter int ind = text.Lungime - 1; // decupează ultimul caracter text = text.Remove(ind); Console.WriteLine(text); // decupează primele două caractere text = text.Remove(0, 2);

Prima versiune a metodei Remove preia un index în șir din care să elimine toate caracterele. A doua versiune necesită încă un parametru - câte caractere trebuie eliminate.

Înlocuire

Pentru a înlocui un caracter sau un subșir cu altul, utilizați metoda Înlocuire:

String text = „o zi bună”; text = text.Replace(„bun”, „rău”); Console.WriteLine(text); text = text.Replace("o", ""); Console.WriteLine(text);

În al doilea caz de utilizare a funcției Înlocuire, un șir de un caracter „o” este înlocuit cu un șir gol, adică este de fapt eliminat din text. Într-un mod similar, este ușor să ștergeți un anumit text în rânduri.

Schimbarea cazului

Pentru a converti un șir în majuscule și minuscule, sunt utilizate funcțiile ToUpper() și, respectiv, ToLower():

String hello = „Bună lume!”; Console.WriteLine(hello.ToLower()); // Salut Lume! Console.WriteLine(hello.ToUpper()); // SALUT LUME!

Top articole similare