Blog Dla Młodszych Programistów C#/.NET

wtorek, 9 listopada 2021
Tworząc aplikacje w C# na pewno często będziesz musiał wykonywać różne operacje związane z tekstem. To znaczy, będziesz chciał zweryfikować, czy podany string zawiera jakiś ciąg znaków, zamienić ze sobą znaki, usunąć, zmodyfikować tekst, sprawdzić index szukanego znaku itd., możliwości jest naprawdę sporo.

W tym artykule właśnie przybliżę Ci 19 metod string'a, które musisz znać. Na pewno ich znajomość bardzo przyda Ci się w pracy, gdy będziesz tworzył aplikacje w C#.

19 Najczęściej Używanych Metod String'a, Które Warto Znać


Przykład


Będziemy w tym artykule pracować na prostym przykładzie.

using System;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            var myString = " Jan,Małgorzata,Kowalski,1 ";

            Console.ReadLine();
        }
    }
}

Mamy tutaj prostą aplikacje konsolową i w metodzie Main inicjalizację zmiennej typu string.


1) IsNullOrWhiteSpace()


Pierwsza metoda to string.IsNullOrWhiteSpace(), czyli sprawdzanie, czy przekazany string jest nullem, pustym string'iem, lub białym znakiem. Także, jeżeli nasz tekst będzie nullem, pustym, string'iem, czy białym znakiem, to wyświetlimy sobie komunikat o treści NULL.

using System;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            var myString = " Jan,Małgorzata,Kowalski,1 ";

            if (string.IsNullOrWhiteSpace(myString))
            {
                Console.WriteLine("NULL");
            }

            Console.ReadLine();
        }
    }
}

Oczywiście w naszym przypadku, z tego względu, że myString ma przypisaną wartość, to po uruchomieniu aplikacji, ten komunikat nie zostanie wyświetlony. Natomiast, jeżeli nasz string byłby np. spacją, to wtedy już ten komunikat zostałby wyświetlony.

using System;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            var myString = " ";

            if (string.IsNullOrWhiteSpace(myString))
            {
                Console.WriteLine("NULL");
            }

            Console.ReadLine();
        }
    }
}

Tutaj wyświetli się komunikat NULL.

Używając tej metody, możemy również użyć negacji, czyli jeżeli chcemy, żeby kod wykonał się, w przypadku gdy tekst jest nullem, pustym string' iem, lub białym znakiem, to nasz kod będzie wyglądał tak:

using System;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            var myString = " Jan,Małgorzata,Kowalski,1 ";

            if (!string.IsNullOrWhiteSpace(myString))
            {
                Console.WriteLine("OK");
            }

            Console.ReadLine();
        }
    }
}

Na konsoli zostanie wyświetlony napis OK.


2) Split()


Druga metoda umożliwi nam zamianę tekstu (string'a) na listę. Jest to metoda Split(), musimy tutaj tylko wskazać, jakim znakiem są rozdzielone dane wartości, a co za tym idzie elementy naszej nowej listy. Stworzymy teraz nową listę o nazwie words i przypiszemy do niej wyrazy ze zmiennej myString, które są oddzielone przecinkiem. Czyli będziemy oczekiwać 4 wartości: Jan, Małgorzata, Kowalski oraz 1. Następnie za pomocą pętli foreach wyświetlimy te elementy na konsoli.

using System;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            var myString = " Jan,Małgorzata,Kowalski,1 ";

            var words = myString.Split(',');

            foreach (var word in words)
                Console.WriteLine(word);

            Console.ReadLine();
        }
    }
}

Po uruchomieniu aplikacji faktycznie oczekiwane wartości zostaną wyświetlone na ekranie. Nasz string został zamieniony na listę.


3) Join()


Trzecia metoda to Join(), czyli odwrotna sytuacja, to znaczy zamiany listy na string'a. W tym przypadku wskazujemy jakim znakiem, te elementy mają być oddzielone. Załóżmy, że chcemy z wcześniej stworzonej listy stworzyć nowego string'a, tak aby poszczególne elementy były oddzielone średnikiem.

using System;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            var myString = " Jan,Małgorzata,Kowalski,1 ";

            var words = myString.Split(',');

            myString = string.Join(';', words);
            Console.WriteLine(myString);

            Console.ReadLine();
        }
    }
}

I tak wygląda wynik: " Jan;Małgorzata;Kowalski;1 ".

Mamy taki sam wynik jak na początku, tylko tym razem zamiast przecinka oddzielamy wyrazy średnikiem.


4) Trim()


Czwarta metoda, która umożliwia nam usuwanie białych znaków z początku i końca string'a. Możemy to osiągnąć, dzięki metodzie Trim(). Tylko co jest ważne, jeżeli tę metodę (podobnie jest też z innymi metodami, które wywołujemy na string'ach) wywołamy na wcześniej zainicjalizowanej zmiennej myString, to w miejscu wywołania metody zostaje stworzona nowa instancja string'a i te zmiany nie będą zastosowane do wcześniej zadeklarowanej zmiennej. Jeżeli chcemy te zmiany zastosować do wcześniej stworzonej zmiennej, to musimy przypisać do niej wywołanie tej metody. Wówczas zostanie stworzona nowa instancja, która zostanie przypisana do zmiennej. Czyli tak przykład nie zadziała poprawnie:

using System;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            var myString = " Jan,Małgorzata,Kowalski,1 ";

            myString.Trim();

            Console.WriteLine(myString);

            Console.ReadLine();
        }
    }
}

Dalej białe znaki na początku i na końcu string'a zostaną wyświetlone na konsoli. Aby to zadziałało poprawnie, nasz przykład może wyglądać w ten sposób:

using System;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            var myString = " Jan,Małgorzata,Kowalski,1 ";

            myString = myString.Trim();

            Console.WriteLine(myString);

            Console.ReadLine();
        }
    }
}

Teraz został już wyświetlony już wynik oczekiwany, czyli: "Jan,Małgorzata,Kowalski,1".


5) TrimStart()


Piąta metoda to usuwanie białych znaków, ale tylko z początku string'a. W tym celu musimy skorzystać z metody TrimStart().

using System;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            var myString = " Jan,Małgorzata,Kowalski,1 ";

            myString = myString.TrimStart();

            Console.WriteLine(myString);

            Console.ReadLine();
        }
    }
}

Wynik: "Jan,Małgorzata,Kowalski,1 ";


6) TrimEnd()


Natomiast metoda TrimEnd() usunie z kolei wszystkie białe znaki, ale z końca string'a.

using System;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            var myString = " Jan,Małgorzata,Kowalski,1 ";

            myString = myString.TrimEnd();

            Console.WriteLine(myString);

            Console.ReadLine();
        }
    }
}

Wynik: " Jan,Małgorzata,Kowalski,1";


7) ToLower()


Siódma metoda to metoda ToLower(), która umożliwia nam zamianę wszystkich znaków na małe litery.

using System;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            var myString = " Jan,Małgorzata,Kowalski,1 ";

            myString = myString.ToLower();

            Console.WriteLine(myString);

            Console.ReadLine();
        }
    }
}

Wynik: " jan,małgorzata,kowalski,1 ";


8) ToUpper()


Tak samo możemy wykonać odwrotną operację, czyli zamianę na duże litery. W tym celu skorzystamy z metody ToUpper().

using System;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            var myString = " Jan,Małgorzata,Kowalski,1 ";

            myString = myString.ToUpper();

            Console.WriteLine(myString);

            Console.ReadLine();
        }
    }
}

Wynik: " JAN,MAŁGORZATA,KOWALSKI,1 ";


9) Replace()


Kolejna metoda to Replace(), czyli zamiana znaku, który zostanie przekazany jako pierwszy, na znak, który jest przekazany jako parametr drugi. Możemy sobie w tym miejscu zamienić wszystkie przecinki na średniki. Tak będzie wyglądało wywołanie tej metody:

using System;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            var myString = " Jan,Małgorzata,Kowalski,1 ";

            myString = myString.Replace(',', ';');

            Console.WriteLine(myString);

            Console.ReadLine();
        }
    }
}

Wynik: " Jan;Małgorzata;Kowalski;1 ";


10) IndexOf()


Dziesiąta metoda IndexOf() umożliwia nam ona pobranie indeksu szukanego znaku w string'u. Jeżeli nie zostanie znaleziony, to metoda zwróci nam -1. Na początek sprawdźmy pod którym indeksem w string'u znajduje się przecinek.

using System;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            var myString = " Jan,Małgorzata,Kowalski,1 ";

            var index = myString.IndexOf(',');

            Console.WriteLine(index);

            Console.ReadLine();
        }
    }
}

Wynik: 4.

W naszym przypadku wynikiem będzie 4 i faktycznie taki indeks ma przecinek (liczymy od 0).


11) LastIndexOf()


W podobny sposób możemy pobrać ostatni indeks szukanego znaku w teście. W tym celu skorzystamy z metody LastIndexOf(). Także wyświetlimy w tym przykładzie indeks ostatniego przecinka w tekście:

using System;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            var myString = " Jan,Małgorzata,Kowalski,1 ";

            var lastIndex = myString.LastIndexOf(',');

            Console.WriteLine(lastIndex);

            Console.ReadLine();
        }
    }
}

Wynik: 24.


12) Substring()


Metoda dwunasta Substring(), czyli wyciąganie ze string'a liter od danego indeksu o określonej długości. W naszym przypadku możemy sobie spróbować wyciągnąć wyraz Małgorzata ze zmienne myString. Nasz kod może wyglądać w ten sposób:

using System;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            var myString = " Jan,Małgorzata,Kowalski,1 ";

            myString = myString.Substring(5, 10);

            Console.WriteLine(myString);

            Console.ReadLine();
        }
    }
}

Wynik: "Małgorzata";

Czyli zaczynamy od indeksu 5 i interesuje nas 10 znaków.


13) Insert()


Kolejna metoda Insert(), która umożliwia nam dodanie wartości do string'a w miejsce przekazanego indeksu. Spróbujmy dodać na pierwszej pozycji, czyli indeks zero wartość X.

using System;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            var myString = " Jan,Małgorzata,Kowalski,1 ";

            myString = myString.Insert(0, "X");

            Console.WriteLine(myString);

            Console.ReadLine();
        }
    }
}

Wynik: "X Jan,Małgorzata,Kowalski,1 ";


14) Remove()


Podobnie możemy również usuwać znaki ze string'a. W tym celu skorzystamy z metody Remove(). Tutaj podobnie jak wcześniej przekazujemy najpierw indeks, a następnie liczbę znaków, które chcemy usunąć.

using System;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            var myString = " Jan,Małgorzata,Kowalski,1 ";

            myString = myString.Remove(0, 2);

            Console.WriteLine(myString);

            Console.ReadLine();
        }
    }
}

Wynik: "an,Małgorzata,Kowalski,1 ".

W naszym przypadku zostały usunięte dwa pierwsze znaki.


15) StartsWith()


Dzięki metodzie StartsWith() możemy sprawdzić, czy nasz string zaczyna się od podanej wartości. Także w naszym przypadki sprawdzimy, czy zmienna myString zaczyna się od znaku X. Metoda StartsWith() zwraca bool'a. Także możemy napisać w tym celu taki kod:

using System;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            var myString = " Jan,Małgorzata,Kowalski,1 ";

            var startsWithX = myString.StartsWith("X");

            Console.WriteLine(startsWithX);

            Console.ReadLine();
        }
    }
}

Wynik: False.


16) EndsWith()


Oprócz tego, że możemy sprawdzić, od jakiego znaku rozpoczyna się string, to również możemy sprawdzić, na jaki znak ten string się kończy. Możemy w tym przypadku skorzystać z metody EndsWith(). Sprawdźmy, czy w naszym przypadku zmienna myString kończy się znakiem X.

using System;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            var myString = " Jan,Małgorzata,Kowalski,1 ";

            var endsWithX = myString.EndsWith("X");

            Console.WriteLine(endsWithX);

            Console.ReadLine();
        }
    }
}

Wynik: False.


17) Contains()


Metoda Contains() umożliwia nam sprawdzenie, czy string zawiera określony ciąg znaków na dowolnej pozycji. Sprawdzimy, czy nasza zmienna zawiera tekst "Jan".

using System;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            var myString = " Jan,Małgorzata,Kowalski,1 ";

            var containsJan = myString.Contains("Jan");

            Console.WriteLine(containsJan);

            Console.ReadLine();
        }
    }
}

Wynik: True.


18) PadLeft()


Metoda PadLeft() umożliwia nam podanie oczekiwanej długości string'a i jeżeli ta długość jest mniejsza, to zostanie on uzupełniony przekazaną wartością z lewej strony. Załóżmy, że chcemy, żeby nasz tekst miał 30 znaków. Jeżeli będzie miał mniej, to zostanie uzupełniony zerami z lewej strony.

using System;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            var myString = " Jan,Małgorzata,Kowalski,1 ";

            myString = myString.PadLeft(30, '0');

            Console.WriteLine(myString);

            Console.ReadLine();
        }
    }
}

Wynik: "000 Jan,Małgorzata,Kowalski,1 ".

Po tej operacji nasz string ma 30 znaków. Z lewej strony zostały dodane trzy zera.


19) PadRight()


Podobnie jest z metodą PadRight(). Tym razem litery są uzupełniane z prawej strony. Możemy tym razem uzupełnić nasz string wykrzyknikami z prawej strony, tak aby całość miała 35 znaków.

using System;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            var myString = " Jan,Małgorzata,Kowalski,1 ";

            myString = myString.PadRight(35, '!');

            Console.WriteLine(myString);

            Console.ReadLine();
        }
    }
}

Wynik: " Jan,Małgorzata,Kowalski,1 !!!!!!!!".


PODSUMOWANIE


Także to jest 19 metod, które moim zdaniem warto poznać. Jak widzisz, sam string zawiera wiele przydatnych metod, które będziesz wiele razy używał w swojej pracy. Oczywiście nie musisz się ich uczyć na pamięć ważne, żebyś wiedział, że takie istnieją, a jeżeli będziesz ich potrzebował użyć, to wtedy zajrzysz do dokumentacji.

Jeżeli taki artykuł Ci się spodobał, to koniecznie dołącz do mojej społeczności. Zapisz się na darmowy newsletter, gdzie co tydzień dzielę się wartościowymi materiałami w szczególności dotyczącymi C# i platformy .NET (darmowy zapis – newsletter).

To wszystko na dzisiaj, do zobaczenia w kolejnym artykule.

Poprzedni artykuł - Czym Jest Typ Domniemany VAR w C#?
Następny artykuł - 7 Podstawowych Błędów Programistów Podczas Pisania Testów Jednostkowych.
Autor artykułu:
Kazimierz Szpin
Kazimierz Szpin
Programista C#/.NET. Specjalizuje się w ASP.NET Core, ASP.NET MVC, ASP.NET Web API, Blazor, WPF oraz Windows Forms.
Autor bloga ModestProgrammer.pl
Komentarze (2)
Adam
ADAM , wtorek, 9 listopada 2021 10:55
EqualsIgnoreCase to dość przydatne rozszerzenie które stosuję u siebie
Marcin
MARCIN, środa, 10 listopada 2021 15:25
Może nie jest najczęściej używana, ale warta uwagi metoda Intern https://docs.microsoft.com/en-us/dotnet/api/system.string.intern Istnieje od wersji .NET Framework 1.1, ale u wielu wzbudza zdziwienie, że jest coś takiego.
Dodaj komentarz

Wyszukiwarka

© Copyright 2024 modestprogrammer.pl. Wszelkie prawa zastrzeżone. Regulamin. Polityka prywatności. Design by Kazimierz Szpin