Тип string

Тип string


Зміст


1. Які характерні особливості типу string у мові C#?

Тип string підтримує символьні рядки. На відміну від інших мов програмування, в C# рядок представляє собою об’єкт. Тому тип string відноситься до посилальних типів а не до типів-значень. Однак, тип string є вбудованим в C# типом даних.

Приклад рядка, що є об’єктом:

"This is a text"

 


2. Як описати змінну з іменем s типу string?
string s;

 


3. Як у змінну типу string занести значення рядка?

Для цього потрібно використати оператор присвоєння ‘=’.

Варіант 1. Присвоєння після опису.

string s; // опис змінної
s = "This is a text"; // присвоєння значення тексту

Варіант 2. Присвоєння під час опису (початкова ініціалізація).

string s = "This is a text"; // початкова ініціалізація

Варіант 3. Використання методу Copy().

s = string.Copy("This is a text"); // s = "This is a text"

 


4. Як визначити чи рівні два рядки типу string між собою?

Два рядки можна порівнювати звичайним оператором порівняння “==“.

Фрагмент коду, що визначає рівність (нерівність) двох рядків:

string s1 = "Hello!";
string s2 = "Hello!";
bool f_equal;

if (s1 == s2)
    f_equal = true;
else
    f_equal = false;

 


5. Як порівняти два рядки типу string в лексикографічному порядку?

У цьому випадку можна використати метод CompareTo(). Метод повертає -1, 0 або 1. У наведеному прикладі видно результат роботи методу.

string s1 = "abcd";
string s2 = "abcde";
int res;

res = s1.CompareTo(s2); // res = -1, (s1<s2)
res = s2.CompareTo(s1); // res = 1, (s2>s1)

s2 = s1; // рядки рівні
res = s1.CompareTo(s2); // res = 0, (s1==s2)
res = s2.CompareTo(s1); // res = 0


 


6. Як з’єднати два рядки типу string?

Спосіб №1 – функція Concat().

string s1 = "Hello ";
string s2 = "world!";
string s3;
s3 = string.Concat(s1, s2); // s3 = "Hello world!"

Спосіб № 2 – використання оператора “+“.

string s1 = "Hello ";
string s2 = "world!";
string s3;
s3 = s1 + s2; // s3 = "Hello world!"

 


7. Як скопіювати один рядок типу string в інший?

Спосіб № 1 – оператор присвоєння.

string s1 = "My string";
string s2;
s2 = s1; // s2 = "My string"

Спосіб № 2 – метод Copy().

string s1 = "My string";
string s2;
s2 = string.Copy(s1); // s2 = "My string"

 


8. Вставка підрядка починаючи з заданого індексу. Функція Insert().

Для вставки підрядка використовується функція Insert(). Функція приймає два параметри. Перший параметр – позиція індексу в рядку, з якої робиться вставка (починається з 0). Другий параметр – текст самого рядка.

string s1 = "ABEF";
string s2;
s2 = s1.Insert(2, "CD"); // s2 = "ABCDEF"
s1 = "123";
s2 = s1.Insert(0, "555"); // s2 = "555123"

// Помилка!
// Заданий аргумент знаходиться за межами допустимих значень.
// s2 = s1.Insert(20, "33");

Якщо задати невірний індекс за межами діапазону, то згенерується виключна ситуація.

 


9. Пошук і повернення індексу першого входження підрядка в даний рядок.

Реалізується функцією IndexOf(). Якщо знайдено підрядок у рядку, то функція повертає позицію першого входження. В іншому випадку функція повертає -1.

Функція має перевантажені варіанти реалізації.

string s = "Hello world!";
int index;
index = s.IndexOf("wor"); // index = 6
index = s.IndexOf("abc"); // index = -1 - не знайшло підрядок "ab" в рядку "Hello world"

// інший варіант функції IndexOf()
index = s.IndexOf("wor", 7); // index = -1 - пошук з позиції 7
index = s.IndexOf("wor", 0); // index = 6 - пошук з позиції 0

// пошук йде від заданого індексу (3)
// і перевіряється задана кількість символів (5)
index = s.IndexOf("wo", 3, 5); // index = 6

 


10. Пошук і повернення індексу останнього входження підрядка в даний рядок функцією LastIndexOf().

Функція має декілька перевантажених реалізацій. Нумерація індексу останнього входження починається з 0.

string s = "bestprog.net";
int index;
index = s.LastIndexOf("prog"); // index = 4

 


11. Як визначити довжину рядка типу string?

Для визначення довжини рядка (кількість символів) типу string використовується властивість Length.

string s = "bestprog.net";
int len;
len = s.Length; // len = 12
s = ""; // len = 0

 


12. Створення рядка заданої ширини. Демонстрація функцій PadLeft() та PadRight().

Функції PadLeft() та PadRight() використовується для створення форматованого рядка, в якому позиції справа або зліва заповнюються пробілами.

string s1 = "abc";
string s2;
s2 = s1.PadLeft(5); // s2 = " abc"
s2 = s1.PadLeft(2); // s2 = "abc"
s2 = s1.PadLeft(9); // s2 = "     abc"

// помилка "Non-negative number required."
// "Потрібно невід'ємне число
// s2 = s1.PadLeft(-2);

s2 = s1.PadRight(2); // s2 = "abc"
s2 = s1.PadRight(8); // s2 = "abc     "

 


13. Видалення заданої кількості символів з рядка функцією Remove().

Функція Remove() має дві реалізації. У першій реалізації функція має два параметри. У другій – один параметр.

Приклад 1. Реалізація функції Remove() з двома параметрами.

string s1 = "0123456789";
string s2;
s2 = s1.Remove(3, 2); // s2 = "01256789"

У даному прикладі функція Remove() отримує два параметри. Перший параметр – позиція, з якої робиться видалення. Другий параметр – кількість видалених символів.

Приклад 2. Реалізація з одним параметром.

string s1 = "0123456789";
string s2;
s2 = s1.Remove(4); // s2 = "0123"

У цьому прикладі функція отримує один параметр. Цей параметр визначає позицію з якої буде здійснено видалення символів.

Якщо вказати

s2 = s1.Remove(0);

то буде видалено увесь рядок.

Приклад 3. Якщо потрібно видалити останній символ у рядку, то потрібно написати такий код.

string s1 = "This is a text!";
string s2;
int len;
len = s1.Length;
s2 = s1.Remove(len-1); // s2 = "This is a text"

 


14. Заміна символів у рядку. Функція Replace().

Функція Replace() має два варіанти реалізації.

Перший варіант оперує рядками типу string. Другий варіант оперує типом char.

Приклад 1. Використання функції Replace() для заміни одного рядка на інший.

string s1 = "0123456789";
string s2;
s2 = s1.Replace("012", "ABC"); // s2 = "ABC3456789"

Приклад 2. Використання функції Replace() для заміни символу.

string s1 = "0123456789";
string s2;
s2 = s1.Replace('0', 'A'); // s2 = "A123456789"

 


15. Як у рядку виділити підрядок. Функція Substring().

Функція Substring() має дві реалізації.

Варіант 1. Виділення підрядка з заданої позиції до кінця рядка.

string s1 = "Automobile";
string s2;
s2 = s1.Substring(4); // s2 = "mobile

Варіант 2. Виділення підрядка з заданої позиції (параметр 1) у заданій кількості символів (параметр 2).

string s1 = "Automobile";
string s2;
s2 = s1.Substring(0, 4); // s2 = "Auto"

 


16. Перетворення числового рядка типу string в ціле число. Функція Parse().

Функція Parse() дозволяє переводити рядок, що складається з цифр, у ціле число. Така функція корисна коли потрібно отримати число, яке було введене з клавіатури і отримане у вигляді рядка. Наприклад, ввід з елементу управління типу TextBox.

// string => int
string s = "389";
int i;
i = int.Parse(s);
i = int.Parse("-29"); // i = -29

 


17. Перетворення цілого числа в рядок. Функція ToString().

Функція ToString() переводить ціле число в його представлення у вигляді рядка. Наприклад, така функція корисна, коли потрібно вивести ціле число на форму в елементі управління Label.

// int => string
string s;
int i;
i = 230;
s = i.ToString(); // s = "230"

 


18. Перетворення рядка string в число з плаваючою комою.

При перетворенні рядка в дійсне число важливо враховувати кодування символів.

Якщо у вас встановлено операційну систему з кириличним кодуванням і налаштовані відповідні регіональні стандарти, тоді символ ‘.’ має бути замінений на символ ,. Це пов’язано з тим, що в країнах які використовують кирилицю розділювачем між цілою і дробовою частинами є символ , (кома). А в англомовних країнах розділювачем цілої і дробової частин є символ ‘.’ (крапка).

Символ-розділювач цілої та дробової частини можна змінити в регіональних налаштуваннях Windows.

Тому, в ОС Windows з кириличним кодуванням за замовчуванням, наступний код викличе виключну ситуацію FormatException з повідомленням: “Input string was not in a correct format” (Вихідний рядок має невірний формат).

double x;
string s;
s = "9.83";
// генерується виключна ситуація FormatException
// з повідомленням "Input string was not in a correct format."
x = double.Parse(s);

Нижче наведено правильний варіант для ОС з кириличним кодуванням:

// string => double
double x;
string s;
s = "9,83";
x = double.Parse(s);

 


19. Перетворення числа з плаваючою комою в string.
// double => string
double x;
string s;
x = -39.038;
s = x.ToString(); // s = "-39,038"

 


20.Переведення значення змінної логічного типу bool в рядок string.
// string => bool
bool b;
string s;
s = "true";
b = bool.Parse(s); // b = True

Якщо ввести неправильне значення в рядок s, то генерується виключна ситуація з повідомленням:

"String was not recognized as a valid Boolean"