Символьний тип 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 = 'к' + 'і' + 'т'; // результат - рядок "кіт"
При введенні і перетворенні можуть виникати виняткові ситуації, наприклад, якщо користувач введе порожній рядок. Для “м’якого” завершення програми передбачена обробка виключень.