Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие КНЕУ.doc
Скачиваний:
24
Добавлен:
07.03.2016
Размер:
3.9 Mб
Скачать

6.8. Символи і рядки

Обробка текстової інформації є, ймовірно, одним з найпоширеніших завдань в сучасному програмуванні, і С# надає для його вирішення широкий набір засобів: окремі символи, масиви символів, змінні і незмінні рядки, а також регулярні вирази.

6.8.1. Символи

Символьний тип char призначений для зберігання символів в кодуванні Unicode. Символьний тип відноситься до вбудованих типів даних С# і відповідає стандартному класу Char бібліотеки .NET з простору імен System. У цьому класі визначені статичні методи, які дозволяють задати вигляд і категорію символу, а також перетворити символ у верхній, нижній регістр, або в число. Основні методи приведені в таблиці 6.3.

Таблиця 6.3

Основні методи класу System.Char

Метод

Опис

GetNumericValue

Повертає числове значення символу, якщо він є цифрою, інакше -1

GetUnicodeCategory

Повертає категорію Unicode-символ

IsControl

Повертає true, якщо символ є таким, що управляє

IsDigit

Повертає true, якщо символ є десятковою цифрою

IsLetter

Повертає true, якщо символ є буквою

IsLetterOrDigit

Повертає true, якщо символ є буквою або цифрою

IsLower

Повертає true, якщо символ в нижньому регістрі

IsNumber

Повертає true, якщо символ є числом

IsPunctuation

Повертає true, якщо символ є розділовим знаком

IsSeparator

Повертає true, якщо символ є роздільником

IsUpper

Повертає true, якщо символ у верхньому регістрі

IsWhiteSpace

Повертає true, якщо символ є пробільним (пропуск, переведеннярядкатаповертаннякаретки)

Parse

Перетворить рядок в символ (рядок повинен складатися з одного символу)

ToLower

Перетворить символ в нижній регістр

ToUpper

Перетворить символ у верхній регістр

MaxValue, MinValue

Повертають символи з максимальним і мінімальними кодами (ці символи не мають видимого представлення)

У лістингу 6.9 продемонстровано використання цих методів.

Лістинг 6.9. Використання методів класу System.Char

using System;

namespace exam35

{

class Classl

{

static void Main()

{

try

{

char a, b = 'B', c = '\x63', d = '\u0032'; // 1

Console.WriteLine(" {0} {1} {2}", b, c, d);

Console.WriteLine(" {0} {1} {2}",

char.ToLower(b), char.ToUpper(c), char.GetNumericValue(d));

do // 2

{

Console.Write("Введіть символ: ");

a = char.Parse(Console.ReadLine());

Console.WriteLine("Введений символ {0}, його код - {1} ", a, (int)a);

if (char.IsLetter(a))Console.WriteLine("Буква");

if (char.IsUpper(a))Console.WriteLine("Верхній peг.");

if (char.IsLower(a))Console.WriteLine("Нижній peг.");

if (char.IsControl(a))Console.WriteLine("Керуючий");

if (char.IsNumber(a))Console.WriteLine("Число");

if (char.IsPunctuation(a)) Console.WriteLine("Роздільник");

} while (a != 'q');

}

catch (Exception a)

{

Console.WriteLine(a.Message);

Console.WriteLine("Виникло виключення");

return;

}

}

}

}

У операторові 1 описані три символьних змінних. Вони ініціалізувалися символьними літералами в різних формах представлення. Далі виконуються виведення і перетворення символів.

У циклі 2 аналізується символ, що вводиться з клавіатури. Можна вводити і символи, що управляють, використовуючи поєднання клавіші Ctrl з латинськими буквами. При введенні використаний метод Parse, що перетворює рядок, який повинен містити єдиний символ, в символ типу char. Оскільки вводиться рядок, введення кожного символу слід завершувати натисненням клавіші Enter. Цикл виконується, поки користувач не введе символ q.

Виведення символу супроводжується його кодом в десятковому вигляді. Для виведення коду використовується явне перетворення до цілого типу. Явне перетворення з символів в рядки і назад в С# не існує, неявним же чином будь-який об'єкт, у тому числі і символ, може бути перетворений в рядок, наприклад:

string s = 'к' + 'і' + 'т'; // результат - рядок "кіт"

При введенні і перетворенні можуть виникати виняткові ситуації, наприклад, якщо користувач введе порожній рядок. Для “м’якого” завершення програми передбачена обробка виключень.