C # - ciągi
W języku C # można używać ciągów jako tablicy znaków, jednak bardziej powszechną praktyką jest użycie stringsłowo kluczowe, aby zadeklarować zmienną łańcuchową. Słowo kluczowe string jest aliasem dlaSystem.String klasa.
Tworzenie obiektu typu String
Możesz utworzyć obiekt typu string używając jednej z następujących metod -
Przypisując ciąg znaków do zmiennej String
Przy użyciu konstruktora klasy String
Za pomocą operatora konkatenacji ciągów (+)
Pobierając właściwość lub wywołując metodę, która zwraca ciąg
Wywołując metodę formatowania, aby przekonwertować wartość lub obiekt na jego reprezentację w postaci ciągu
Poniższy przykład demonstruje to -
using System;
namespace StringApplication {
class Program {
static void Main(string[] args) {
//from string literal and string concatenation
string fname, lname;
fname = "Rowan";
lname = "Atkinson";
char []letters= { 'H', 'e', 'l', 'l','o' };
string [] sarray={ "Hello", "From", "Tutorials", "Point" };
string fullname = fname + lname;
Console.WriteLine("Full Name: {0}", fullname);
//by using string constructor { 'H', 'e', 'l', 'l','o' };
string greetings = new string(letters);
Console.WriteLine("Greetings: {0}", greetings);
//methods returning string { "Hello", "From", "Tutorials", "Point" };
string message = String.Join(" ", sarray);
Console.WriteLine("Message: {0}", message);
//formatting method to convert a value
DateTime waiting = new DateTime(2012, 10, 10, 17, 58, 1);
string chat = String.Format("Message sent at {0:t} on {0:D}", waiting);
Console.WriteLine("Message: {0}", chat);
}
}
}
Kiedy powyższy kod jest kompilowany i wykonywany, daje następujący wynik -
Full Name: RowanAtkinson
Greetings: Hello
Message: Hello From Tutorials Point
Message: Message sent at 5:58 PM on Wednesday, October 10, 2012
Właściwości klasy String
Klasa String ma następujące dwie właściwości -
Sr.No. | Właściwość i opis |
---|---|
1 | Chars Pobiera obiekt Char w określonej pozycji w bieżącym obiekcie String . |
2 | Length Pobiera liczbę znaków w bieżącym obiekcie String. |
Metody klasy String
Klasa String ma wiele metod, które pomagają w pracy z obiektami typu string. W poniższej tabeli przedstawiono niektóre z najczęściej używanych metod -
Sr.No. | Metody i opis |
---|---|
1 | public static int Compare(string strA, string strB) Porównuje dwa określone obiekty typu string i zwraca liczbę całkowitą, która wskazuje ich względną pozycję w kolejności sortowania. |
2 | public static int Compare(string strA, string strB, bool ignoreCase ) Porównuje dwa określone obiekty typu string i zwraca liczbę całkowitą, która wskazuje ich względną pozycję w kolejności sortowania. Jednak ignoruje wielkość liter, jeśli parametr logiczny ma wartość true. |
3 | public static string Concat(string str0, string str1) Łączy dwa obiekty typu string. |
4 | public static string Concat(string str0, string str1, string str2) Łączy trzy obiekty łańcuchowe. |
5 | public static string Concat(string str0, string str1, string str2, string str3) Łączy cztery obiekty łańcuchowe. |
6 | public bool Contains(string value) Zwraca wartość wskazującą, czy określony obiekt String występuje w tym ciągu. |
7 | public static string Copy(string str) Tworzy nowy obiekt String o tej samej wartości co określony ciąg. |
8 | public void CopyTo(int sourceIndex, char[] destination, int destinationIndex, int count) Kopiuje określoną liczbę znaków z określonej pozycji obiektu String do określonej pozycji w tablicy znaków Unicode. |
9 | public bool EndsWith(string value) Określa, czy koniec obiektu ciągu pasuje do określonego ciągu. |
10 | public bool Equals(string value) Określa, czy bieżący obiekt String i określony obiekt String mają tę samą wartość. |
11 | public static bool Equals(string a, string b) Określa, czy dwa określone obiekty String mają tę samą wartość. |
12 | public static string Format(string format, Object arg0) Zastępuje jeden lub więcej elementów formatu w określonym ciągu ciągiem reprezentującym określony obiekt. |
13 | public int IndexOf(char value) Zwraca indeks (liczony od zera) pierwszego wystąpienia określonego znaku Unicode w bieżącym ciągu. |
14 | public int IndexOf(string value) Zwraca indeks (liczony od zera) pierwszego wystąpienia określonego ciągu w tym wystąpieniu. |
15 | public int IndexOf(char value, int startIndex) Zwraca indeks (liczony od zera) pierwszego wystąpienia określonego znaku Unicode w tym ciągu, rozpoczynając wyszukiwanie od określonej pozycji znaku. |
16 | public int IndexOf(string value, int startIndex) Zwraca indeks (liczony od zera) pierwszego wystąpienia określonego ciągu w tym wystąpieniu, rozpoczynając wyszukiwanie od określonej pozycji znaku. |
17 | public int IndexOfAny(char[] anyOf) Zwraca indeks (liczony od zera) pierwszego wystąpienia w tym wystąpieniu dowolnego znaku w określonej tablicy znaków Unicode. |
18 | public int IndexOfAny(char[] anyOf, int startIndex) Zwraca indeks (liczony od zera) pierwszego wystąpienia w tym wystąpieniu dowolnego znaku w określonej tablicy znaków Unicode, rozpoczynając wyszukiwanie od określonej pozycji znaku. |
19 | public string Insert(int startIndex, string value) Zwraca nowy ciąg, w którym określony ciąg jest wstawiany w określonym położeniu indeksu w bieżącym obiekcie ciągu. |
20 | public static bool IsNullOrEmpty(string value) Wskazuje, czy określony ciąg ma wartość null, czy pusty ciąg. |
21 | public static string Join(string separator, params string[] value) Łączy wszystkie elementy tablicy ciągów przy użyciu określonego separatora między każdym elementem. |
22 | public static string Join(string separator, string[] value, int startIndex, int count) Łączy określone elementy tablicy ciągów przy użyciu określonego separatora między każdym elementem. |
23 | public int LastIndexOf(char value) Zwraca pozycję indeksu liczonego od zera ostatniego wystąpienia określonego znaku Unicode w bieżącym obiekcie ciągu. |
24 | public int LastIndexOf(string value) Zwraca pozycję indeksu liczonego od zera ostatniego wystąpienia określonego ciągu w bieżącym obiekcie ciągu. |
25 | public string Remove(int startIndex) Usuwa wszystkie znaki w bieżącym wystąpieniu, zaczynając od określonej pozycji i kontynuując do ostatniej pozycji, i zwraca ciąg. |
26 | public string Remove(int startIndex, int count) Usuwa określoną liczbę znaków w bieżącym ciągu, zaczynając od określonej pozycji i zwraca ciąg. |
27 | public string Replace(char oldChar, char newChar) Zastępuje wszystkie wystąpienia określonego znaku Unicode w bieżącym obiekcie ciągu określonym znakiem Unicode i zwraca nowy ciąg. |
28 | public string Replace(string oldValue, string newValue) Zastępuje wszystkie wystąpienia określonego ciągu w bieżącym obiekcie ciągu określonym ciągiem i zwraca nowy ciąg. |
29 | public string[] Split(params char[] separator) Zwraca tablicę ciągów, która zawiera podciągi w bieżącym obiekcie ciągu, rozdzielone elementami określonej tablicy znaków Unicode. |
30 | public string[] Split(char[] separator, int count) Zwraca tablicę ciągów, która zawiera podciągi w bieżącym obiekcie ciągu, rozdzielone elementami określonej tablicy znaków Unicode. Parametr int określa maksymalną liczbę zwracanych podciągów. |
31 | public bool StartsWith(string value) Określa, czy początek tego wystąpienia ciągu pasuje do określonego ciągu. |
32 | public char[] ToCharArray() Zwraca tablicę znaków Unicode ze wszystkimi znakami w bieżącym obiekcie ciągu. |
33 | public char[] ToCharArray(int startIndex, int length) Zwraca tablicę znaków Unicode ze wszystkimi znakami w bieżącym obiekcie ciągu, zaczynając od określonego indeksu i do określonej długości. |
34 | public string ToLower() Zwraca kopię tego ciągu zamienioną na małe litery. |
35 | public string ToUpper() Zwraca kopię tego ciągu zamienioną na wielkie litery. |
36 | public string Trim() Usuwa wszystkie początkowe i końcowe znaki odstępu z bieżącego obiektu String. |
Pełną listę metod i konstruktorów klas String można znaleźć w bibliotece MSDN.
Przykłady
Poniższy przykład ilustruje niektóre z metod wymienionych powyżej -
Porównywanie ciągów
using System;
namespace StringApplication {
class StringProg {
static void Main(string[] args) {
string str1 = "This is test";
string str2 = "This is text";
if (String.Compare(str1, str2) == 0) {
Console.WriteLine(str1 + " and " + str2 + " are equal.");
} else {
Console.WriteLine(str1 + " and " + str2 + " are not equal.");
}
Console.ReadKey() ;
}
}
}
Kiedy powyższy kod jest kompilowany i wykonywany, daje następujący wynik -
This is test and This is text are not equal.
Ciąg zawiera ciąg
using System;
namespace StringApplication {
class StringProg {
static void Main(string[] args) {
string str = "This is test";
if (str.Contains("test")) {
Console.WriteLine("The sequence 'test' was found.");
}
Console.ReadKey() ;
}
}
}
Kiedy powyższy kod jest kompilowany i wykonywany, daje następujący wynik -
The sequence 'test' was found.
Pobieranie podciągu
using System;
namespace StringApplication {
class StringProg {
static void Main(string[] args) {
string str = "Last night I dreamt of San Pedro";
Console.WriteLine(str);
string substr = str.Substring(23);
Console.WriteLine(substr);
}
}
}
Kiedy powyższy kod jest kompilowany i wykonywany, daje następujący wynik -
San Pedro
Łączenie ciągów
using System;
namespace StringApplication {
class StringProg {
static void Main(string[] args) {
string[] starray = new string[]{"Down the way nights are dark",
"And the sun shines daily on the mountain top",
"I took a trip on a sailing ship",
"And when I reached Jamaica",
"I made a stop"};
string str = String.Join("\n", starray);
Console.WriteLine(str);
}
}
}
Kiedy powyższy kod jest kompilowany i wykonywany, daje następujący wynik -
Down the way nights are dark
And the sun shines daily on the mountain top
I took a trip on a sailing ship
And when I reached Jamaica
I made a stop