Робота з рядками. Клас System.String
Зміст
- 1. Як ініціалізувати змінну типу String?
- 2. Як очистити рядок типу String?
- 3. Як визначити чи рівні два рядки типу String між собою?
- 4. Як порівняти два рядки типу String в лексикографічному порядку?
- 5. Як об’єднати два рядки типу String?
- 6. Як скопіювати один рядок типу String в інший?
- 7. Копіювання рядків типу String з використанням методу Copy().
- 8. Вставка підрядка починаючи з заданого індексу. Функція Insert().
- 9. Пошук і повернення індексу першого входження підрядка в даний рядок.
- 10. Пошук і повернення індексу останнього входження підрядка в даний рядок функцією LastIndexOf().
- 11. Як визначити довжину рядка типу String?
- 12. Створення рядка заданої ширини. Демонстрація функцій PadLeft() та PadRight().
- 13. Видалення заданої кількості символів з рядка функцією Remove().
- 14. Заміна всіх символів у рядку. Функція Replace().
- 15. Як у рядку виділити підрядок. Функція Substring().
- 16.Перетворення числового рядка в 32-бітне ціле число. Функція Parse().
- 17. Перетворення цілого числа в рядок. Функція ToString().
- 18. Перетворення рядка в дійсне число.
- 19. Перетворення дійсного числа в рядок.
- 20. Переведення значення змінної логічного типу в рядок.
- Зв’язані теми
Пошук на інших ресурсах:
1. Як ініціалізувати змінну типу String?
String ^s1 = "873"; // s1 = "873"
2. Як очистити рядок типу String?
String ^s1 = "Hello!"; String ^s2; s2 = s1; // s2 = "Hello!" s2 = s1->Empty; // s2 = ""
3. Як визначити чи рівні два рядки типу String між собою?
String ^s1 = "Hello!"; String ^s2 = "Hello!"; int res; if (s1 == s2) res = 1; else res = 0;
4. Як порівняти два рядки типу String в лексикографічному порядку?
У цьому випадку можна використати метод Compare(). Метод повертає -1, 0 або 1.
String ^s1 = "Hello!"; String ^s2 = "Hello"; int res; res = s1->Compare(s1,s2); // res = 1 res = s2->Compare(s2,s1); // res = -1 res = s2->Compare(s1,s2); // res = 1 s2 = s1; res = s1->Compare(s1,s2); // res = 0 res = s1->Compare(s2,s1); // res = 0
5. Як з’єднати два рядки типу String?
Спосіб №1 – функція Concat().
String ^s1 = "Hello "; String ^s2 = "world!"; String ^s3; s3 = s1->Concat(s1,s2); // s3 = "Hello world!"
Спосіб № 2. Оператор “+“.
String ^s1 = "Hello "; String ^s2 = "world!"; String ^s3; s3 = s1 + s2; // s3 = "Hello world!"
6. Як скопіювати один рядок типу String в інший?
String ^s1 = "My String"; String ^s2; s2 = s1; // s2 = "My String"
7. Копіювання рядків типу String з використанням методу Copy().
String ^s1 = "MyString "; String ^s2; s2 = s1->Copy(s1); // s2 = "My String"
8. Вставка підрядка починаючи з заданого індексу. Функція Insert().
Для вставки підрядка використовується функція Insert(). Функція приймає два параметри. Перший параметр – позиція індексу в рядку, з якої робиться вставка (починається з 0). Другий параметр – текст самого рядка.
String ^s1 = "123789"; String ^s2; s2 = s1->Insert(3, "456"); // s2 = "123456789" s1 = "123789"; s2 = s1->Insert(0, "456"); // s2 = "456123789" // помилка компіляції з повідомленням: // "Specified argument was out of the range of valid values" // "Parameter name: startIndex" // s2 = s1->Insert(19, "456");
Позиція індексу у функції Insert() починається з 0.
9. Пошук і повернення індексу першого входження підрядка в даний рядок.
Реалізується функцією IndexOf(). Якщо знайдено підрядок у рядку, то функція повертає позицію першого входження. В іншому випадку функція повертає -1.
Функція має перевантажені варіанти реалізації.
String ^s1 = "Hello world!"; int index; index = s1->IndexOf("wor"); // index = 6 index = s1->IndexOf("ab"); // index = -1 => не знайшло підрядок "ab" в рядку "Hello world!" index = s1->IndexOf("wor",7); // index = -1 - пошук з позиції 7 index = s1->IndexOf("wor",0); // index = 6 - пошук з позиції 0 // пошук йде від заданого індексу (3) // і перевіряється задана кількість символів (5) index = s1->IndexOf("wo",3,5); // index = 6
10. Пошук і повернення індексу останнього входження підрядка в даний рядок функцією LastIndexOf().
String ^s1 = "text-text-text"; int index; index = s1->LastIndexOf("text"); // index = 10
11. Як визначити довжину рядка типу String?
Для визначення довжини рядка типу String використовується властивість Length.
String ^s1 = "abcdef"; int len; len = s1->Length; // len = 6 s1 = ""; len = s1->Length; // 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(3); // s2 = "abc" s2 = s1->PadRight(8); // s2 = "abc "
13. Видалення заданої кількості символів з рядка функцією Remove().
String ^s1 = "0123456789"; String ^s2; s2 = s1->Remove(3,2); // s2 = "01256789"
14. Заміна всіх символів у рядку. Функція Replace().
String ^s1 = "0123456789"; String ^s2; s2 = s1->Replace(s1,"22"); // s2 = "22"
15. Як у рядку виділити підрядок. Функція Substring().
String ^s1 = "Automobile"; String ^s2; // варіант № 1 - виділяє підрядок з заданої // позиції до кінця рядка s2 = s1->Substring(4); // s2 = "mobile" // варіант № 2 - виділяє підрядок з заданої // позиції (параметр 1) у заданій кількості символів (параметр 2) s2 = s1->Substring(0,4); // s2 = "Auto"
16.Перетворення числового рядка в 32-бітне ціле число. Функція Parse().
// String => int int i; String ^s1 = "280"; i = i.Parse(s1); // i = 280 i = i.Parse("-32"); // i = -32
17. Перетворення цілого числа в рядок. Функція ToString().
// int => String int i; String ^s1; i = 350; s1 = i.ToString(); // s1 = 350
18. Перетворення рядка в дійсне число.
При перетворенні рядка в дійсне число важливо враховувати кодування символів.
Якщо у вас встановлено операційну систему з кириличним кодуванням і налаштовані відповідні регіональні стандарти, тоді символ ‘.‘ має бути замінений на символ ‘,‘. Це пов’язано з тим, що в країнах які використовують кирилицю розділювачем між цілою і дробовою частинами є символ ‘,‘ (кома). А в англомовних країнах розділювачем цілої і дробової частин є символ ‘.‘ (крапка).
Символ-розділювач цілої та дробової частини можна змінити в регіональних налаштуваннях Windows.
Тому, в ОС Windows з кириличним кодуванням за замовчуванням, наступний код викличе виключну ситуацію FormatException з повідомленням: “Input string was not in a correct format“.
// String => double double x; String ^s1; s1 = "12.87"; // генерується виключна ситуація FormatException // з повідомленням "Input string was not in a correct format." x = x.Parse(s1);
Нижче наведено правильний варіант для ОС з кириличним кодуванням:
// String => double double x; String ^s1; s1 = "12,87"; // тут все добре x = x.Parse(s1); // x = 12.87
19. Перетворення дійсного числа в рядок.
// double => String double x; String ^s1; x = -3.568; s1 = x.ToString(); // s1 = "-3.568
20. Переведення значення змінної логічного типу в рядок.
// String => bool bool b; String ^s1; s1 = "true"; b = b.Parse(s1); // b = True