Символы

Символьный тип char предназначен для хранения символов в кодировке Unicode. Способы представления символов рассматривались в разделе «Литералы» (см. с. 26). Символьный тип относится к встроенным типам данных С# и соответствует стан­дартному классу Char библиотеки.NET из пространства имен System. В этом классе определены статические методы, позволяющие задать вид и категорию символа, а также преобразовать символ в верхний или нижний регистр и в число. Основ­ные методы приведены в табл. 6.2.

Таблица 6.2. Основные методы класса System.Char


Метод Описание

GetNumericValue Возвращает числовое значение символа, если он является цифрой, и -1 в

противном случае

GetUnicodeCategory Возвращает категорию Unicode-символа Bсe Unicode-символы

разделены на категории, например, десятичные цифры (Decimal

DigitNumber), римские цифры (LetterNumber), разделители строк

(LineSeparator), буквы в ниж нем регистре (LowercaseLetter) и т. д.

IsControl Возвращает true, если символ является управляющим

IsDigit Возвращает true, если символ является десятичной цифрой

IsLetter Возвращает true, если символ является буквой

IsLetterOrDigit Возвращает true, если символ является буквой или цифрой

IsLower Возвращает true, если символ задан в нижнем регистре

Is Number Возвращает true, если символ является числом (десятичным

или шестнадцатеричным)

IsPunctuation Возвращает true, если символ является знаком препинания

IsSeparator Возвращает true, если символ является разделителем

IsUpper Возвращает true, если символ записан в верхнем регистре

IsWhiteSpace Возвращает true, если символ является пробельным (пробел,

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

символа)

ToLower Преобразует символ в нижний регистр

ToUpper Преобразует символ в верхний регистр

MaxValue, MinValue Возвращают символы с максимальным и минимальным кодами (эти символы не имеют видимого представления)

В листинге 6.6 продемонстрировано использование этих методов.

Листинг 6.6. Использование методов класса System.Char

using System;

namespace ConsoleApplication1

{

class Class1

{

static void Main()

{

try

{

char b = 'В', с = '\x63', d = '\u0032'; // 1

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

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

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

char a;

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("Bepxний per.");

if (char.IsLower(a))

Console.WriteLine("Нижний per.");

if (char.IsControl(a))

Console.WriteLine("Управляющий");

if (char.IsNumber(a))

Console.WriteLine("Число");

if (char.IsPunctuation(a))

Console.WriteLine("Paздeлитeль");

}

while (a!= 'q');

}

catch

{

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

return;

}

}

}

}

В операторе 1 описаны три символьных переменных. Они инициализируются символьными литералами в различных формах представления. Далее выполня­ются вывод и преобразование символов.

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

Вывод символа сопровождается его кодом в десятичном виде1. Для вывода кода используется явное преобразование к целому типу. Явное преобразование из сим­волов в строки и обратно в С# не существует, неявным же образом любой объект, в том числе и символ, может быть преобразован в строку2, например:

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

При вводе и преобразовании могут возникать исключительные ситуации, напри­мер, если пользователь введет пустую строку. Для «мягкого» завершения про­граммы предусмотрена обработка исключений.

Обратите внимание на коды русских букв: как далеко от латинских они оказались в ко­дировке Unicode! Об этом рассказывалось в разделе «Простейший ввод-вывод» (см. с. 59).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: