Deklaracje ciągów
Łańcuch znaków w języku C to jednowymiarowa tablica znaków, której ostatnim elementem jest znak końca linii - zero (łańcuch zakończony znakiem NULL, czyli łańcuch zakończony znakiem NULL).
Ogłoszenie typ zmiennej Ciąg znaków w C jest możliwy na trzy sposoby, z których dwa inicjują ciąg w czasie deklaracji.
Pierwszy sposób:
Deklaracje tablicy znaków (nie zapomnij dodać miejsca na kończący znak null):
Znaki;
Drugi sposób:
Przypisz zmiennej łańcuchowej wartość początkową (w tym przypadku kompilator może sam obliczyć długość łańcucha):
Char s = "Przykład inicjalizacji ciągu";
Na prawo od znaku przypisania znajduje się stała łańcuchowa. Zero ('\0') jest automatycznie dodawane na końcu ciągu. Stałe łańcuchowe znaków są umieszczane w statycznej klasie pamięci.
Trzeci sposób:
Niejawne wskazanie, że używana jest tablica. Po lewej stronie znaku przypisania znajduje się wskaźnik do symbolu:
Char *s="Druga opcja inicjalizacji";
Zmienna s będzie wskaźnikiem do tego miejsca w pamięć o dostępie swobodnym, gdzie znajduje się stała łańcuchowa. Ta forma notacji ma potencjalny błąd, ponieważ wskaźnik do znaku jest często określany jako ciąg. Poniższy wpis jest tylko wskaźnikiem do znaku, ponieważ nie ma miejsca na ciąg:
Znaki*;
Wprowadzanie ciągu ze standardowego urządzenia wejściowego (klawiatury)
Istnieje zestaw funkcji do pracy z ciągami. Dla wejścia ze standardowego urządzenia wejściowego (klawiatury) najczęściej wykorzystywane są funkcje biblioteczne ze standardowego modułu wejścia/wyjścia: scanf oraz dostaje.
Aby wprowadzić ciąg za pomocą funkcji scanf, używa formatu « %s» i zauważ, że znak adresu nie jest używany przed identyfikatorem wiersza « & » , ponieważ tablica jednowymiarowa jest już reprezentowana przez wskaźnik do jej początku:
scanf("%s", s);
Funkcjonować dostaje () odczytuje znaki, aż osiągnie znak nowej linii. Funkcja akceptuje wszystkie znaki do znaku nowej linii, ale nie w tym. Końcowe zero ('\0') jest dodawane na końcu ciągu. Funkcjonować dostaje () wstawia sekwencję znaków odczytywanych z klawiatury do parametru ciągu i zwraca wskaźnik do tego ciągu (jeśli operacja się powiodła) lub NULL (w przypadku błędu). W poniższym przykładzie po pomyślnym zakończeniu operacji na ekranie wyświetlą się dwie identyczne linie:
#włączać
Na marginesie zauważamy, że funkcja gets jest często używana do wprowadzania dowolnych danych z klawiatury w postaci ciągu w celu dalszej konwersji przez funkcję sscanf na żądany format lub do wstępnej analizy danych wejściowych, na przykład:
#włączać
Drukowanie ciągów na standardowe wyjście (ekran monitora)
Aby wyprowadzić łańcuchy na standardowe wyjście (ekran monitora), możesz użyć dwóch funkcji printf oraz stawia. W funkcji printf jako format przekazywany jest "%s". Wygoda korzystania z tej funkcji polega na tym, że oprócz ciągu można od razu wyświetlić dane innych typów. funkcja funkcja stawia polega na tym, że po wyprowadzeniu linii następuje automatyczne przejście do następnej linii.
Funkcje ciągów
Do konwersji ciągów w języku C dostępna jest biblioteka ciągów. Każda z funkcji ma swój własny format zapisu (prototyp).
W tym artykule omówiono najczęściej używane funkcje. - czytać
Przykład programów (listing) pracujących ze stringami
Współczesny standard C++ definiuje klasę z funkcjami i właściwościami (zmiennymi) do organizowania pracy z łańcuchami (w klasycznym języku C nie ma łańcuchów jako takich, są tylko tablice znaków):
#włączać
#włączać#włączać
Aby pracować z ciągami, musisz również uwzględnić standardową przestrzeń nazw:
Korzystanie z przestrzeni nazw std;
W przeciwnym razie będziesz musiał podać wszędzie deskryptor klasy std::string zamiast string.
Poniżej znajduje się przykład programu, który działa z łańcuchem (nie działa w starych kompilatorach zgodnych z C!):
#włączać
Główne cechy, które posiada klasa string:
- inicjalizacja tablicą znaków (łańcuch typu wbudowanego) lub innym obiektem typ ciągu. Wbudowany typ nie ma drugiej możliwości;
- kopiowanie jednej linii do drugiej. Dla typu wbudowanego musisz użyć funkcji strcpy();
- dostęp do poszczególnych znaków ciągu do czytania i pisania. We wbudowanej tablicy odbywa się to za pomocą operacji indeksowania lub adresowania pośredniego za pomocą wskaźnika;
- porównywanie dwóch ciągów pod kątem równości. W przypadku typu wbudowanego używane są funkcje rodziny strcmp();
- konkatenacja (konkatenacja) dwóch ciągów, dająca wynik albo jako trzeci ciąg, albo zamiast jednego z oryginalnych. W przypadku typu wbudowanego używana jest funkcja strcat(), aby uzyskać wynik w Nowa linia, musisz sekwencyjnie używać funkcji strcpy() i strcat(), a także zadbać o alokację pamięci;
- wbudowane środki do określania długości łańcucha (funkcje składowe klasy size() i l ength()). Jedynym sposobem sprawdzenia długości wbudowanego ciągu znaków jest obliczenie go za pomocą funkcji strlen();
- możliwość sprawdzenia, czy ciąg jest pusty.
Rozważ te podstawowe funkcje w szczegółach.
Inicjalizacja ciągu opisując i Długość łańcucha(bez końcowego terminatora zerowego):
String st("Mój ciąg\n"); Cout<< "Длина " << st << ": " << st.size() << " символов, включая символ новой строки\n";
Ciąg może być również pusty:
Ciąg st2;
Aby sprawdzić, czy czy ciąg jest pusty?, możesz porównać jego długość z 0:
if (!st.size()) // pusty
lub użyj metody empty(), która zwraca true dla pustego ciągu i false dla niepustego:
if (st.empty()) // puste
Trzecia forma tworzenia ciągu inicjuje obiekt typu string z innym obiektem tego samego typu:
Ciąg st3(st);
Łańcuch st3 jest inicjowany łańcuchem st . Jak możemy się upewnić, że te ciągi pasują? Użyjmy operatora porównania (==):
Jeśli (st == st3) // inicjalizacja się powiodła
Jak skopiuj jedną linię do drugiej? Za pomocą zwykłego operatora przypisania:
st2 = st3; // skopiuj st3 do st2
Do konkatenacja ciągów używany jest operator dodawania (+) lub operator dodawania-przypisania (+=). Niech podane zostaną dwie linie:
Ciąg s1("cześć, "); ciąg s2("świat\n");
Możemy otrzymać trzeci ciąg składający się z konkatenacji pierwszych dwóch, a więc:
Ciąg s3 = s1 + s2;
Jeśli chcemy dodać s2 na koniec s1 , musimy napisać:
S1 += s2;
Operacja dodawania może łączyć obiekty klasy strunowy nie tylko między sobą, ale także ze stringami typu wbudowanego. Możesz przepisać powyższy przykład, aby znaki specjalne i znaki interpunkcyjne były reprezentowane przez wbudowany typ char * , a znaczące słowa były obiektami klasy string:
Const char *pc = ", "; ciąg s1("cześć"); ciąg s2("świat"); ciąg s3 = s1 + pc + s2 + "\n"; Cout<< endl << s3;
Takie wyrażenia działają, ponieważ kompilator "wie", jak automatycznie konwertować obiekty typu wbudowanego na obiekty klasy string . Możliwe jest również proste przypisanie wbudowanego ciągu do obiektu ciągu:
Ciąg s1; const char *pc = "tablica znaków"; s1=szt; // prawo
Odwrotna transformacja to nie działa. Próba wykonania następującej wbudowanej inicjalizacji ciągu typu spowoduje błąd kompilacji:
Znak*str = s1; // błąd kompilacji
Aby wykonać tę konwersję, musisz jawnie wywołać funkcję członkowską o nazwie c_str() ("ciąg C"):
Const char *str = s1.c_str();
Funkcja c_str() zwraca wskaźnik do tablicy znaków zawierającej ciąg obiektu ciągu, tak jak we wbudowanym typie ciągu. Słowo kluczowe const tutaj zapobiega „niebezpiecznej” możliwości w nowoczesnych środowiskach wizualnych bezpośredniej modyfikacji zawartości obiektu za pomocą wskaźnika.
Do poszczególne postacie obiekt typu string , podobnie jak typ wbudowany, można uzyskać za pomocą operacji indeksowania. Na przykład, oto fragment kodu, który zastępuje wszystkie kropki podkreśleniami:
String str("www.disney.com"); int rozmiar = str.rozmiar(); dla (int i = 0; i< size; i++) if (str[i] == ".") str[ i ] = "_"; cout << str;
Replace(str.begin(), str.end(), ".", "_");
To prawda, że nie jest tu użyta metoda replace klasy string, ale algorytm o tej samej nazwie:
#włączać
Ponieważ obiekt ciągu zachowuje się jak kontener, można do niego zastosować inne algorytmy. Pozwala to rozwiązywać problemy, których nie rozwiązują bezpośrednio funkcje klasy string.
Poniżej znajduje się krótki opis głównych operatorów i funkcji klasy string, linki w tabeli prowadzą do opisów w języku rosyjskim w Internecie. Pełniejszą listę możliwości klasy string można znaleźć na przykład w Wikipedii lub cplusplus.com.
Określanie znaków w ciągu |
|
operator= |
przypisuje wartości do ciągu |
przydzielać |
przypisuje znaki do ciągu |
Dostęp do poszczególnych postaci |
|
w |
uzyskanie określonego znaku ze sprawdzaniem indeksu poza granicami |
operator |
uzyskanie określonego znaku |
przód |
uzyskanie pierwszego znaku |
plecy |
uzyskanie ostatniego znaku |
dane |
zwraca wskaźnik do pierwszego znaku ciągu |
c_str |
zwroty niemodyfikowalny Tablica znaków C zawierająca znaki ciągu |
Sprawdzanie pojemności sznurka |
|
pusty |
sprawdza, czy ciąg jest pusty |
rozmiar |
zwraca liczbę znaków w ciągu |
największy rozmiar |
zwraca maksymalną liczbę znaków |
rezerwa |
rezerwuje miejsce do przechowywania |
Operacje na sznurku |
|
jasne |
czyści zawartość ciągu |
wstawić |
wstawianie znaków |
usuwać |
usuwanie znaków |
push_back |
dodanie znaku na końcu łańcucha |
pop_back |
usuwa ostatni znak |
dodać |
|
operator+= |
dodaje znaki na końcu ciągu |
porównywać |
porównuje dwie struny |
zastąpić |
zastępuje każde wystąpienie określonego znaku |
substr |
zwraca podciąg |
Kopiuj |
kopiuje znaki |
Zmień rozmiar |
zmienia liczbę przechowywanych znaków |
»Wiarygodna agencja SEO w Indiach może zwiększyć przychody małych firm 80% użytkowników szuka w Google i innych wyszukiwarkach przed dokonaniem zakupu, a ponad 50% zapytań generowanych przez wyszukiwarki zostaje przekonwertowanych. Te dwie statystyki potwierdzają znaczenie optymalizacji pod kątem wyszukiwarek. Istnieje wiele takich statystyk i faktów, które jasno pokazują: każda mała, średnia lub duża firma potrzebuje profesjonalnych usług SEO. Małe firmy i startupy często borykają się z problemami budżetowymi. Mogą skorzystać z pomocy dowolnej godnej zaufania agencji SEO z Indii, aby uzyskać najlepszą usługę SEO w swoim budżecie, aby zwiększyć swoje przychody. ankiety z wygnania
Wstrzymaj AdBlock w tej witrynie. A więc napisy w języku C. Nie mają oddzielnego typu danych, jak ma to miejsce w wielu innych językach programowania. W języku C napis jest tablicą znaków. Do oznaczenia końca wiersza używany jest znak „\0”, o którym mówiliśmy w ostatniej części tej lekcji. Nie jest w żaden sposób wyświetlany na ekranie, więc nie będzie działać. Tworzenie i inicjowanie ciąguPonieważ łańcuch jest tablicą znaków, deklarowanie i inicjowanie łańcucha jest podobne do podobnych operacji z tablicami jednowymiarowymi. Poniższy kod ilustruje różne sposoby inicjowania ciągów. Lista 1. Charstr; char str1 = ("Y","o","n","g","C","o","d","e","r","\0"); char str2 = "Cześć!"; char str3 = "Witaj!"; Rys.1 Deklaracja i inicjalizacja ciągów W pierwszym wierszu po prostu deklarujemy tablicę dziesięciu znaków. To nawet nie jest sznurek, bo nie ma znaku null \0 , o ile jest to tylko zestaw znaków. Druga linia. Najprostszy sposób na inicjalizację na czole. Każdy symbol deklarujemy osobno. Najważniejsze, żeby nie zapomnieć o dodaniu znaku zerowego \0 . Trzecia linia jest podobna do drugiej. Zwróć uwagę na zdjęcie. Dlatego w ciągu po prawej stronie jest mniej znaków niż w tablicy, pozostałe elementy zostaną wypełnione \0 . Czwarta linia. Jak widać, rozmiar nie jest tutaj ustawiony. Program obliczy go automatycznie i utworzy tablicę znaków o wymaganej długości. Spowoduje to wstawienie znaku zerowego \0 na końcu. Jak wyprowadzić ciąg?Dodajmy powyższy kod do pełnoprawnego programu, który wyświetli wygenerowane ciągi na ekranie. Lista 2. #włączać Rys. 2 Różne sposoby wyświetlania ciągu na ekranie Jak widać, istnieje kilka podstawowych sposobów wyświetlania napisu na ekranie.
Jedynym zastrzeżeniem są funkcje puts i fputs. Zauważ, że funkcja puts zawija dane wyjściowe do następnego wiersza, ale funkcja fputs nie. Jak widać, wynik jest dość prosty. Wprowadzanie ciągówZ wejściem łańcuchowym sytuacja jest trochę bardziej skomplikowana niż z wyjściem. Najprostszy sposób byłby następujący: Lista 3. #włączać Funkcja gets wstrzymuje program, odczytuje ciąg znaków wprowadzonych z klawiatury i umieszcza go w tablicy znaków, której nazwa jest przekazywana do funkcji jako parametr. Więc co mamy. Mamy zadanie: napisać ciąg do tablicy o ograniczonym rozmiarze. Oznacza to, że musimy w jakiś sposób kontrolować liczbę znaków wprowadzanych przez użytkownika. I tu z pomocą przychodzi funkcja fgets: Lista 4. #włączać Funkcja fgets przyjmuje jako dane wejściowe trzy argumenty: zmienną do zapisania łańcucha, rozmiar napisu do zapisania oraz nazwę strumienia, z którego mają zostać pobrane dane do zapisania w łańcuchu, w tym przypadku stdin . Jak już wiesz z lekcji 3, stdin jest standardowym strumieniem wejściowym, zwykle powiązanym z klawiaturą. Nie jest konieczne, aby dane pochodziły ze strumienia stdin, w przyszłości będziemy również wykorzystywać tę funkcję do odczytywania danych z plików. Jeśli podczas wykonywania tego programu wprowadzimy ciąg dłuższy niż 10 znaków, do tablicy zostanie jeszcze tylko 9 znaków od początku i znak łamania wiersza, fgets „obtnie” ciąg do wymaganej długości. Zauważ, że funkcja fgets nie odczytuje 10 znaków, ale 9 ! Jak pamiętamy, w łańcuchach ostatni znak jest zarezerwowany dla znaku null. Sprawdźmy to. Uruchommy program od ostatniego zestawienia. I wprowadź ciąg 1234567890 . Na ekranie zostanie wyświetlony ciąg 123456789. Rys.3 Przykład działania funkcji fgets Pojawia się pytanie. Gdzie podziała się dziesiąta postać? A ja odpowiem. Nigdzie nie odszedł, pozostał w strumieniu wejściowym. Uruchom następujący program. Lista 5. #włączać Oto efekt jej pracy. Rys.4 Niepusty bufor stdin Pozwól, że wyjaśnię, co się stało. Nazwaliśmy funkcję fgets. Otworzyła strumień wejściowy i czekała, aż wprowadzimy dane. Wprowadziliśmy 1234567890\n z klawiatury (\n oznacza Enter ). To poszło do wejścia strumienia wejściowego stdin . Funkcja fgets, zgodnie z oczekiwaniami, wzięła pierwsze 9 znaków 123456789 ze strumienia wejściowego, dodała do nich znak null \0 i zapisała to w łańcuchu str . W strumieniu wejściowym wciąż pozostaje 0\n. Następnie deklarujemy zmienną h . Wyświetlamy jego wartość na ekranie. Następnie wywołujemy funkcję scanf. Tutaj oczekuje się, że możemy coś wpisać, ale skoro 0\n zawiesza się w strumieniu wejściowym, wtedy funkcja scanf przyjmuje to jako nasze dane wejściowe i zapisuje 0 do zmiennej h . Następnie wyświetlamy go na ekranie. To oczywiście nie jest dokładnie takie zachowanie, jakiego oczekujemy. Aby poradzić sobie z tym problemem, konieczne jest wyczyszczenie bufora wejściowego po odczytaniu z niego ciągu wprowadzonego przez użytkownika. W tym celu użyj funkcji specjalnej fflush . Ma tylko jeden parametr - strumień do wyczyszczenia. Poprawmy ostatni przykład, aby jego działanie było przewidywalne. Lista 6. #włączać Teraz program będzie działał tak, jak powinien. Rys.4 Opróżnianie bufora stdin za pomocą funkcji fflush Podsumowując, można zauważyć dwa fakty. Pierwszy. Obecnie używanie funkcji gets jest niebezpieczne, dlatego zaleca się używanie funkcji fgets wszędzie. Drugi. Nie zapomnij wyczyścić bufora wejściowego, jeśli używasz funkcji fgets. Na tym kończy się rozmowa na temat wprowadzania ciągów. Pójść dalej. Ostatnia aktualizacja: 31.10.2015 PowiązanieKonkatenację lub konkatenację ciągów można wykonać za pomocą operatora + lub metody Concat: Ciąg s1 = "cześć"; ciąg s2 = "świat"; ciąg s3 = s1 + " " + s2; // wynik: string "witaj świecie" string s4 = String.Concat(s3, "!!!"); // wynik: napis "Witaj świecie!!!" Konsola WriteLine(s4); Metoda Concat jest statyczną metodą klasy String, która jako parametry przyjmuje dwa ciągi znaków. Istnieją również inne wersje metody, które przyjmują inną liczbę parametrów. Metoda Join może być również używana do łączenia ciągów: Ciąg s5 = "jabłko"; ciąg s6 = "dzień"; ciąg s7 = "zachowuje"; ciąg s8 = "lekarz"; ciąg s9 = "z dala"; wartości ciągu = nowy ciąg ( s5, s6, s7, s8, s9 ); String s10 = String.Join(" ", wartości); // wynik: ciąg "jabłko dziennie trzyma lekarza z dala" Metoda Join jest również statyczna. Wersja metody użytej powyżej przyjmuje dwa parametry: ciąg znaków ogranicznika (w tym przypadku spację) oraz tablicę ciągów, które zostaną połączone i oddzielone ogranicznikiem. Porównanie ciągówAby porównać ciągi, użyj statycznej metody Compare: Ciąg s1 = "cześć"; ciąg s2 = "świat"; int wynik = String.Compare(s1, s2); jeśli (wynik<0) { Console.WriteLine("Строка s1 перед строкой s2"); } else if (result >0) ( Console.WriteLine("Linia s1 następuje po linii s2"); ) else ( Console.WriteLine("Linie s1 i s2 są identyczne"); ) // wynikiem będzie "Linia s1 jest przed linią s2" Ta wersja metody Compare pobiera dwa ciągi i zwraca liczbę. Jeśli pierwszy ciąg jest alfabetycznie wyższy niż drugi, zwracana jest liczba mniejsza od zera. W przeciwnym razie zwracana jest liczba większa od zera. I trzeci przypadek - jeśli ciągi są równe, to zwracana jest liczba 0. W tym przypadku, ponieważ znak h jest alfabetycznie wyższy niż znak w, pierwszy wiersz również będzie wyższy. Szukaj w ciąguZa pomocą metody IndexOf możemy określić indeks pierwszego wystąpienia pojedynczego znaku lub podciągu w ciągu: String s1 = "Witaj świecie"; znak ch = "o"; int indexOfChar = s1.IndexOf(ch); // równa się 4 Console.WriteLine(indexOfChar); string subString = "wor"; int indexOfSubstring = s1.IndexOf(subString); // równa się 6 Console.WriteLine(indexOfSubstring); Metoda LastIndexOf działa w podobny sposób, znajduje tylko indeks ostatniego wystąpienia znaku lub podciągu w ciągu. Kolejna grupa metod pozwala dowiedzieć się, czy ciąg zaczyna się, czy kończy określonym podciągiem. Do tego służą metody StartsWith i EndsWith. Na przykład mamy zadanie usunięcia wszystkich plików z rozszerzeniem .exe z folderu: Ścieżka ciągu = @"C:\SomeDir"; pliki ciągów = Directory.GetFiles(ścieżka); dla (int i = 0; i< files.Length; i++) { if(files[i].EndsWith(".exe")) File.Delete(files[i]); } Dzielenie liniiZa pomocą funkcji Split możemy podzielić ciąg na tablicę podciągów. Jako parametr funkcja Split przyjmuje tablicę znaków lub ciągów, które będą służyć jako separatory. Na przykład policzmy liczbę słów w wyrażeniu, dzieląc je przez znaki odstępu: String text = "I dlatego to wszystko się stało"; string words = text.Split(new char ( " ")); foreach (ciąg s w słowach) ( Console.WriteLine(s); ) Nie jest to najlepszy sposób na dzielenie przez spacje, ponieważ moglibyśmy mieć kilka kolejnych spacji w ciągu wejściowym, a spacje również znalazłyby się w końcowej tablicy, więc lepiej użyć innej wersji metody: String words = text.Split(new char ( " " ), StringSplitOptions.RemoveEmptyEntries); Drugi parametr StringSplitOptions.RemoveEmptyEntries mówi, aby usunąć wszystkie puste podciągi. Przycinanie sznurkaAby przyciąć początkowe lub końcowe znaki, użyj funkcji Przytnij: String text = "Witaj świecie"; tekst = tekst Przytnij(); // wynik "hello world" text = text.Trim(new char ( "d", "h" )); // wynik "ello world" Funkcja Trim bez parametrów przycina początkowe i końcowe spacje i zwraca przycięty ciąg. Aby jawnie określić, które znaki początku i końca mają zostać przycięte, możemy przekazać do funkcji tablicę tych znaków. Ta funkcja ma częściowe analogi: funkcja TrimStart przycina znaki początkowe, a funkcja TrimEnd przycina znaki końcowe. Funkcja Substring umożliwia przycięcie określonej części ciągu: Tekst ciągu = "Miły dzień"; // skróć zaczynając od trzeciego znaku text = text.Substring(2); // wynik "miłego dnia" Console.WriteLine(text); // skróć od pierwszych do dwóch ostatnich znaków text = text.Substring(0, text.Length - 2); // wynik to "dobry de" Console.WriteLine(text); Funkcja Substring zwraca również przycięty ciąg. Jako parametr pierwsza używana wersja używa indeksu, z którego ma zostać przycięty ciąg. Druga wersja wykorzystuje dwa parametry - indeks początku cięcia i długość ciętej części sznurka. WstawićAby wstawić jeden wiersz do drugiego, użyj funkcji Wstaw: Tekst ciągu = "Miły dzień"; string subString = "wspaniały"; tekst = tekst.Wstaw(8, podciąg); Konsola.WriteLine(tekst); Pierwszym parametrem w funkcji Insert jest indeks, w którym należy wstawić podciąg, a drugim parametrem jest sam podciąg. Usuwanie wierszyMetoda Remove pomaga usunąć część ciągu: Tekst ciągu = "Miły dzień"; // indeks ostatniego znaku int ind = text.Length - 1; // wytnij ostatni znak text = text.Remove(ind); Konsola.WriteLine(tekst); // wytnij pierwsze dwa znaki text = text.Remove(0, 2); Pierwsza wersja metody Remove pobiera indeks w ciągu, z którego mają zostać usunięte wszystkie znaki. Druga wersja przyjmuje jeszcze jeden parametr - ile znaków należy usunąć. ZastąpienieAby zastąpić jeden znak lub podciąg innym, użyj metody Replace: String text = "miłego dnia"; text = text.Replace("dobry", "zły"); Konsola.WriteLine(tekst); tekst = tekst.Zamień("o", ""); Konsola.WriteLine(tekst); W drugim przypadku użycia funkcji Replace, ciąg jednego znaku „o” jest zastępowany ciągiem pustym, czyli faktycznie jest usuwany z tekstu. W podobny sposób łatwo jest usunąć określony tekst w wierszach. Zmiana przypadkuAby przekonwertować ciąg na wielkie i małe litery, używane są funkcje ToUpper() i ToLower(), odpowiednio: String hello = "Witaj świecie!"; Console.WriteLine(hello.ToLower()); // Witaj świecie! Console.WriteLine(witaj.ToUpper()); // WITAJ ŚWIECIE! |