Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція 6. Строковий тип String.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
157 Кб
Скачать
☆

Масиви типу 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