MetodyCzęść NR.2Kiedyś komputery były tylko maszynami, które manipulowały wyłącznie wartościami liczbowymi. Pierwsze super komputery obliczały tor lotu pocisków jak i łamały szyfry.

To było kiedyś, komputery dzisiaj, chociaż nikt nie prowadzić statystyk w tym kierunku, pracują w większości nad manipulacją napisów.

Czy to jest dokument tekstowy, czy strona internetowa operacje na napisach powszechnie występują.

Dla programistów C++

Alternate Text W języku C# string jest to pełnoprawny typ ,a nie tablica znaków.


No cóż, skoro operacje na napisach to taki poważny biznes, Postanowiłem zrobić sobie rewizje klasy String i klasy StringBulider. Przydałoby się też pod szlifować wiedzę z wyrażeń regularnych, czyli klasa Regex. ale wszystko po kolei, w tym wpisie przeskanuje klasę String.

Jak wygląda klasa String

Zadeklarowana klasa System.String wygląda tak:

public sealed class String : IComparable, ICloneable, 
    IConvertible, IComparable<string>,
    IEnumerable<char>, IEnumerable, IEquatable<string>

Klasa jest zamknięta więc nie można po niej dziedziczyć. Jak widać klasa obsługuje dużo liczbę interfejsów.

IComparable –Ten interfejs jest obsługiwany w celu uporządkowania danego typu . Dzięki niemu łańcuchy mogą być uporządkowane alfabetycznie. Każdy łańcuch może być porównany i umieszczony w odpowiednim miejscu na liście. Klas obsługując interfejs IComparable posiada metodę “CompareTo()” . Metoda służąca do porównania tych samych typów.

ICloneable - Interfejs ten udostępnia metodę “Clone()” dla danej klasy string. Pozwala ona tworzyć nowe egzemplarze takim samej wartości co oryginalny obiekt.

IConvertible – Udostępnia metody na konwersje na inne typy podstawowe jak “ToBoolean()” , “ToByte()”,”ToDouble()”, ToDecimal() .

IEnumerable<char> – Pozwala na przejście pojedynczych znaków w napisie za pomocą pętli foreach.

IEnumerable –Napis string to w pewnym sensie kolekcja znaków.

IEquatable<string> - Interfejs udostępniający metodę Equals(). Metoda ta sprawdza czy dwa typy string są dokładnie takie same.

Teraz gdy wiemy jak klasa string jest zadeklarowana przejdźmy do tworzenia łańcuchów znaków.

Ważne aspekty co do tworzenia łańcucha znaków

Najczęściej tworzenie łańcucha znaków wygląda w ten sposób.

string napis = "Napis";

W napisach jednak mogą pojawiać się znaki ucieczki. Oto ich lista.

ZnakZnaczenie
\’Liczby całkowite
\”Cudzysłów
\\Odwrócony ukośnik.
\oZnak null
\aZnak alarmu
\bZnak cofania
\fZnak przesunięcia strony.
\nNowy wiersz
\rPowrót karetki
\tTabulacja poziomowa
\vTabulacja pionowa


Znaki ucieczki są przydatne, ponieważ z powodów językowych w C# nie można napisać “cudzysłów” jako “cudzysłów”.

To samo dotyczy ścieżek do pliku. Sam “\” ukośnik jest traktowany jako nieskończony ,a raczej zły symbol znaku ucieczki. Kompilator uzna to za błąd.

Błędna ścieżka

Prawidłowa ścieżka do pliku będzie jednak wyglądać tak. Przy zastosowaniu odpowiedniego znaku ucieczki.

string tak = "D:\\Programy\\Cezary\\";

Łańcuch znaków jednak może być utworzony z dosłownych literałów znakowych, które rozpoczynają się od znaku “@”.

string tak2 = @"D:\Programy\Cezary\"

W ten sposób zaznaczasz ,że dany łańcuch nie korzysta ze znaków ucieczki. Rozwiązuje to problem co do ścieżek plikowych ,ale cudzysłów i tak wciąż musi zostać napisany za pomocą znaków ucieczki.

Swoją drogą string tak i tak2 są równoważne (udowodniłem to używając metody Compare) wybór stylu zapisu jest czystą kwestią wyboru.

Lista dostępnych funkcjonalność klasy string Dla C#

Klasa string udostępnia liczne metody do porównywania znaków przeszukiwania ich i manipulowania nimi. Oto tabela przedstawiająca metody statyczne i niestatyczne klasy System.String.

Metody dostępne dla instancji obiektu string.

Instancje

MetodaOpis działania
Equals()Sprawdza czy dwa łańcuchy znaków są takie same.
CharsMechanizm indeksowania znaków.
LengthLiczba znaków egzemplarza. Jest to właściwość.
CompareTo()Porównuje łańcuch znaków.
CopyTo()Kopiuje określoną liczbę znaków do tablicy znaków w formacie Unicode
EndsWith()Określa czy dany łańcuch kończy się jak podany łańcuch.
Insert()Wstawia określone znaki i zwraca nowy łańcuch znaków.
LastIndexOf()Zwraca indeks ostatniego znaku/łańcucha, który zawiera podany znak bądź łańcuch.
PadLeft()Wyrównuje znaki do prawej dodając po lewej stronie odstęp lub określony znak.
PadRight()Wyrównuje znaki do lewej dodając po prawie stronie odstęp lub określony znak.
Remove()Usuwa określoną liczbę znaków.
Split()Zwraca tablicę łańcuchów z określonego napisu podzielonego za każdy razem, gdy występuje podany znak.
StartsWith()Sprawdza czy na początku znajduje się dany znak.
Substring()Pobiera łańcuch.
ToCharArray()Kopiuje łańcuch jako tablicę znaków char
ToLower()Zwraca łańcuch, w którym są same małej litery.
ToLowerInvariant()Zwraca łańcuch, w którym są same małej litery zachowując zasady dla danej kultury.
ToUpper()Zwraca łańcuch, w którym są same duże litery.
ToUpperInvariant()Zwraca łańcuch, w którym są same duże litery zachowując zasady dla danej kultury.
Trim()Usuwa z początku i końca łańcucha wszystkie wystąpienia określonych znaków.
TrimEnd()Działa jak Trim() ,ale tylko na końcu łańcucha.
TrimStart()Działa jak Trim() ,ale tylko na początku łańcucha.
IndexOf()Metoda przeciążona. Podaje numer indeksu znaku, w którym wystąpiło dane słowo bądź znak. Można zacząć poszukiwanie od danego znaku.
IndexOfAny()Metoda przeciążona. W tym wypadku podajemy tablice znaków, jeśli któryś z nich się pojawił najpierw metoda zwraca dany indeks.
Normalize()Zwraca ten sam napis ,ale jest on zapisany w innym formie bitowym. NormalizationForm Enumeration
IsNormalize()Sprawdza czy dany string jest zapisany w danym formacie bitowym


Metody statyczne klasy System.String.

Metody statyczne

MetodaOpis działania
Compare()Metoda statyczna.Porównuje dwa łańcuchy znaków. Metoda przeciążona.
CompareOrdinal()Metoda statyczna.Porównuje dwa łańcuchy znaków z pominięciem ustawień regionalnych.
Concat()Łączy łańcuchy znaków. Metoda przeciążona.
Copy()Kopiuje łańcuch znaków na inny.
Format()Przeciążona metoda. Nadaje łańcuchowi znaków odpowiedni format.
Equals()Określa czy łańcuchy mają tą samo wartość.
IsNullOrEmpty()Metoda statyczna. Sprawdza czy dany łańcuch jest pusty bądź nie ma w ogóle referencji.
IsNullOrWithSpaces()Metoda statyczna.Sprawdza czy dany łańcuch ma znaki spacji, czy w ogóle nie ma referencji.

IsInter
Sprawdza czy łańcuch jest internowany.

Interned
String jest internowany. Metoda ta odzyskuje/odnajduje referencje dla danego napisu.
Join()Metoda statyczna, która łączy elementy tablicy string w łańcuch znaków.


Pola statyczne klasy System.String

MetodaOpis działania
EmptyPubliczne pole statyczne. Reprezentuje pusty łańcuch.


Niestety sama lista metod w klasie String nikomu jeszcze nie pomogła ,więc aby utrwalić tą wiedzę zobaczmy jak te metody działają w praktyce.

Prezentacje rozpocznę od metod statycznych. Postanowiłem jednak oddzielić tą zawartość i umieścić ją w innym wpisie. Link i spis treści powinien być poniżej.