Тип string, призначений для роботи з рядками символів в кодуванні Unicode, є вбудованим типом С#. Йому відповідає базовий клас System.String бібліотеки .NET.
Створити рядок можна декількома способами:
string s; // ініціалізація відкладена
string t = "qqq"; // ініціалізація рядковим літералом
string u = new string(‘ ’,20); // конструктор створює рядок з 20 пропусків
char[] а = {'0','0','0'}; // масив для ініціалізації рядка
string v = new string( а ); // створення з масиву символів
Для рядків визначені наступні операції:
привласнення ( = );
перевірка на рівність ( = = );
перевірка на нерівність (! = ) ;
звернення по індексу ([]) ;
зчеплення(конкатенація) рядків ( + ).
Не дивлячись на те що рядки є посилальним типом даних, на рівність і нерівність перевіряються не посилання, а значення рядків. Рядки рівні, якщо мають однакову кількість символів і збігаються по символам.
Звертатися до окремого елементу рядка по індексу можна тільки для набуття значення, але не для його зміни. Це пов'язано з тим, що рядки типу string відносяться до так званих незмінних типів даних. Методи, що змінюють вміст рядка, насправді створюють нову копію рядка. Невживані “старі” копії автоматично видаляються складальником сміття.
У класі System.String передбачено використання методів, полів і властивостей, що дозволяють виконувати з рядками практично будь-які дії. Основні елементи класу приведені в таблиці 6.4.
Таблиця 6.4.
Основні елементи класу System.String
Назва
| Вигляд
| Опис
|
Compare
| Статичний метод
| Порівняння двох рядків в лексикографічному (алфавітному) порядку. Різні реалізації методу дозволяють порівнювати рядки і підрядки з урахуванням і без урахування регістра і особливостей національного представлення дат і так далі
|
CompareOrdinal
| Статичний метод
| Порівняння двох рядків по кодах символів. Різні реалізації методу дозволяють порівнювати рядки і підрядки
|
CompareTo
| Метод
| Порівняння поточного екземпляру рядка з іншим рядком
|
Продовження таблиці 6.4
Назва
| Вигляд
| Опис
|
Concat
| Статичний метод
| Конкатенація рядків. Метод допускає зчеплення довільного числа рядків
|
Copy
| Статичний метод
| Створення копії рядка
|
Empty
| Статичне поле
| Порожній рядок (тільки для читання)
|
Format
| Статичний метод
| Форматування відповідно до заданих специфікаторів формату (див. далі)
|
IndexOf,
IndexOfAny,
LastIndexOf, LastIndexOfAny
| Методи
| Визначення індексів першого і останнього входження заданого підрядка або будь-якого символу із заданого набору
|
Insert
| Метод
| Вставка підрядка в задану позицію
|
Intern,
IsInterned
| Статичні
методи
| Повертає посилання на рядок, якщо такий вже існує. Якщо рядка немає, Intern додає рядок у внутрішній пул, IsIntern повертає null
|
Join
| Статичний
метод
| Злиття масиву рядків в єдиний рядок. Між елементами масиву вставляються роздільники (див.далі)
|
Length
| Властивість
| Довжина рядка (кількість символів)
|
PadLeft,
PadRight
| Методи
| Вирівнювання рядка по лівому або правому краю шляхом вставки потрібного числа пропусків на початку або в кінці рядка
|
Remove
| Метод
| Видалення підрядка із заданої позиції
|
Replace
| Метод
| Заміна всіх входжень заданого підрядка або символу новим підрядком або символом
|
Split
| Метод
| Розділяє рядок на елементи, використовуючи задані роздільники. Результати поміщаються в масив рядків
|
StartsWith, EndsWith
| Методи
| Повертає true або false залежно від того, починається або закінчується рядок заданим підрядком
|
Substring
| Метод
| Виділення підрядка, починаючи із заданої позиції
|
ToCharArray
| Метод
| Перетворення рядка в масив символів
|
ToLower, ToUpper
| Методи
| Перетворення символів рядка до нижнього або верхнього регістра
|
Trim,
TrimStart, TrimEnd
| Методи
| Видалення пропусків початку і кінця рядка
|
Приклад застосування методів приведений в лістингу 6.11.
Лістинг 6.11. Робота з рядками типу string
using System;
namespace ConsoleApplication1
{
class Classl
{
static void Main()
{
string s = "прекрасна королева Ізольда";
Console.WriteLine(s);
string sub = s.Substring(3).Remove(11, 2); //1
Console.WriteLine(sub);
string[] mas = s.Split(' '); //2
string joined = string.Join("!", mas);
Console.WriteLine(joined);
Console.WriteLine("Введіть рядок");
string x = Console.ReadLine(); //3
Console.WriteLine("Ви ввели рядок " + x);
double a = 12.234;
int b = 29;
Console.WriteLine(" a = {0,6:C} b = {1,2:X}", a, b); //4
Console.WriteLine(" a = {0,6:0.#} b = {1,5:0.# ' руб. '}", a, b); //5
Console.WriteLine(" a = {0,6:F3} b = {1:D3}", a, b); //6
}
}
}
Результат роботи програми:
прекрасна королева Ізольда
красна корова Ізольда
прекрасна! королева! Ізольда
Введіть рядок
не хочу!
Ви ввели рядок не хочу!
a = 12,23р. b = 1D
a = 12,2 b = 29 руб
a = 12,234 b = 029
У операторі 1 виконуються два послідовні виклики методів: метод Substring повертає підрядок рядка s, який містить символи початкового рядка, починаючи з третього. Для цього підрядка викликається метод Remove, що видаляє з нього два символи, починаючи з 11-го. Результат роботи методу привласнюється змінною sub.
Аргументом методу Split (оператор 2) є роздільник, в даному випадку - символ пропуску. Метод розділяє рядок на окремі слова, які заносяться в масив рядків mas. Статичний метод Join (він викликається через ім'я класу) об'єднує елементи масиву mas в один рядок, вставляючи між кожною парою слів рядок "!". Оператор 3 нагадує вам про те, як вводити рядки з клавіатури.