- •Модуль 1. Мова програмування с# і платформа ms.Net Framework Лекція 6. Стандартні класи с#. Робота з рядками
- •6.1. Тип char. Масиви типу char
- •Масиви типу char
- •6.2. Робота з рядками. Клас String і його методи
- •Форматування рядків
- •6.3. Перевірка рядка на пустоту
- •6.4. Клас StringBuilder і його методи
- •6.4.2. Синтаксис оператора try:
- •6.4. Обробка помилок. Клас Exception.
- •6.4.1. Виклик і обробка виключень
- •6.5. Комплексний приклад. Вдосконалений консольний калькулятор
- •Питання і завдання для самостійної роботи студента
- •18. Лабораторна робота № 5.
Масиви типу char
Масив символів, як і масив будь-якого іншого типу побудований на основі базового класу System.Array.
Приклад 6.3
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Lab6
{
class Program
{
static void Main(string[] args)
{
char[] a = { 'm', 'a', 's', 's', 'i', 'v' }; // 1
char[] b = "через тиждень у нас перший кредит".ToCharArray(); // 2
PrintArray( "масив а:", a );
int pos = Array.IndexOf( a, 'm' );
a[pos] = 'M';
PrintArray( "Змінений масив а:", a );
PrintArray( "Масив b:", b );
Array.Reverse( b );
PrintArray( "Змінений масив b:", b );
Console.ReadKey();
}
public static void PrintArray( string header, Array a )
{
Console.WriteLine( header );
foreach ( object x in a ) Console.Write( x );
Console.WriteLine( "\n" );
}
}
}
6.2. Робота з рядками. Клас String і його методи
Тип string, призначений для роботи з рядками символів в кодуванні Unicode, є вбудованим посилковим типом C#. Йому відповідає базовий клас 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 реалізовано багато різних методів, що виконують операції над рядками. Основні властивості і методи класу String перелічені у табл. 6.2.
Таблиця 6.2. Деякі властивості і методи класу System.String |
|
Length |
Властивість. Дозволяє отримати кількість символів в рядку. |
Concat() |
Дозволяє з'єднати декілька рядків або змінних типу object. |
CompareTo()
|
Дозволяє порівняти два рядки. В разі рівності рядків результат виконання функції дорівнює нулю. При позитивному значенні функції більшим є рядок, для якого викликався метод. |
Copy() |
Створює нову копію існуючого рядка. |
Format()
|
Застосовується для форматування рядка з використанням різних примітивів (рядків і числових даних) і підстановлювальних виразів вигляду {0}. |
Insert() |
Дозволяє вставити один рядок всередину існуючого. |
Remove()
|
Видаляє символи в рядку. |
ToUpper() ToLower() |
Перетворюють всі символи рядка в строкові або прописні. |
Chars |
Дозволяє отримати символ, що знаходиться в певній позиції рядка.
|
Join()
|
Створює рядок, сполучаючи задані рядки і розділяючи їх рядком-роздільником. |
Replace()
|
Замінює один символ рядка іншим.
|
Split()
|
Повертає масив рядків з елементами - підрядками основного рядка, між якими знаходяться символи-роздільники. |
Substring() |
Дозволяє отримати підрядок основного рядка, заданої довжини, що починається з певного символу. |
Trim() |
Видаляє пропуски або набір заданих символів на початку і кінці основного рядка. |
ToCharArray()
|
Створює масив символів і вставляє в нього символи початкового рядка. |
IndexOf() |
Знаходить номер входження підрядка у рядок |
При роботі з рядками в C# необхідно враховувати таке. Тип string є посилковим типом. Проте, не дивлячись на це, при використанні операцій порівняння відбувається порівняння значень строкових об'єктів, а не адрес цих об'єктів, розміщених в оперативній пам'яті. Крім того, оператор "+" об'єкту string перевизначений, тому при його використанні застосовується метод Concat().
Приклад 6.4
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
string s = "прекрасная королева Изольда";
Console.WriteLine(s);
string sub = s.Substring(3).Remove(12, 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.ReadKey();
}
}
}
Результат роботи програми:
прекрасная королева Изольда
красная корова Изольда
прекрасная! королева! Изольда
Введите строку
не хочу!
Вы ввели строку не хочу!
a = 12,23p. b = 1D
