Тип char

Тип char предназначен для размещения двоичных данных, которые трактуются как Unicode-символы. Unicode — это стандарт кодирования символов, позволяющий представить знаки всех существующих алфавитов, при этом каждый символ, в общем случае, занимает от 2 до 4 байт оперативной памяти. В ОС семейства Windows принята кодировка UTF-16LE, в которой каждому символу предоставляются 2 байта. Коды в этой кодировке разделены на несколько областей. Область с кодами от U+0000 до U+007F отведена для размещения ASCII кодов. Для размещения кириллицы выделена область от U+0400 до U+052F.

В отличие от строк, константа типа char ограничивается не двойными кавычками, а апострофами:

char c = "A"; // Ошибка!

char c = 'A'; // Правильное определение

Тип char эквивалентен системному типу System.Char и представляется структурой, в которой определены методы, показанные в табл. 5.4.

Таблица 5.4. Методы, специфичные для типа char

Метод

Описание

double GetNumericValue(char c);

Возвращает числовой код указанного символа. Перегруженный вариант метода принимает два параметра: строку и номер символа в строке, для которого требуется получить его код

UnicodeCategory GetUnicodeCategory(char c);

Возвращает категорию символа (см. далее). Перегруженный вариант метода принимает два параметра: строку и номер символа в строке, для которого требуется получить его категорию

bool IsControl(char c);

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

bool IsDigit(char c);

Возвращает true, если символ с — цифра

bool IsLetter(char c);

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

bool IsLetterOrDigit(char c);

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

bool IsLower(char c);

Возвращает true, если символ с — строчная буква

bool IsNumber(char c);

Возвращает true, если символ с — число

bool IsPunctuation(char c);

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

bool IsSeparator(char c);

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

bool IsSurrogate(char c);

Возвращает true, если символ с — составной (см. далее)

bool IsSymbol(char c);

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

bool IsUpper(char c);

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

bool IsWhiteSpace(char c);

Возвращает true, если символ с — пробел

char ToLower(char c);

Преобразует, если это возможно, символ с к строчной букве

string ToString(char c);

Преобразует символ с к строке

char ToUpper(char c(;

Преобразует, если это возможно, символ с к прописной букве

Метод GetUnicodeCategory() возвращает одно из значений перечисления UnicodeCategory, члены которого описаны в табл. 5.5.

Таблица 5.5. Члены перечисления UnicodeCategory

Член

Описание символа

ClosePunctuation

Закрывающий символ для парных символов, таких как фигурные, квадратные или круглые скобки

Control

Управляющий символ

CurrencySymbol

Символ денежной единицы

DashPuntuation

Тире или дефис

DecimalDigitNumber

Десятичная цифра

EnclosingMark

Закрывающий маркер

FinalQuotePunctuation

Закрывающий маркер цитаты (например, закрывающая кавычка)

Format

Форматирующий символ

InitialQuotePunctuation

Открывающий маркер цитаты

LetterNumber

Буквенная цифра (например, римская цифра)

LineSeparator

Разделитель строк

LowerCaseLetter

Строчная буква

MathSymbol

Математический символ

ModifierLetter

Символ является модификатором предыдущего символа

NonSpacingMark

Не пробельный символ, указывающий на модификацию базового символа

OpenPunctuation

Символ представляет собой открывающую скобку (фигурную, квадратную или круглую)

OtherLetter

Буква, не являющаяся строчной, прописной, буквицей (маркером абзаца) или буквенным модификатором

OtherNotAssigned

Этот символ не является Unicode-символом

OtherNumber

Числовой символ, не являющийся десятичной или буквенной цифрой (например, символ дроби)

OtherPunctuation

Открывающий символ для парных символов, таких как фигурные, квадратные или круглые скобки

OtherSymbol

Не математический символ, текущий символ или модифицирующий символ

ParagraphSeparator

Разделитель абзаца

PrivateUse

Символ для частного использования (private-use)

SpaceSeparator

Разделитель, не являющийся форматирующим или управляющим символом

SpacingCombiningMark

Модифицирующий символ, влияющий на ширину знакоместа базового символа

TitlecaseLetter

Буквица (маркер абзаца)

UpercaseLetter

Прописная буква

Следующий код иллюстрирует использование метода GetUnicodeCategory() (файл Ch03\GetUnicodeAttr\Program.cs):

using System;

public class Program

{

public static void Main()

{

char ch2 = '2';

string str = "Upper Case";

Console.WriteLine(Char.GetUnicodeCategory('a'));

// Вывод: "LowercaseLetter"

Console.WriteLine(Char.GetUnicodeCategory(ch2));

// Вывод: "DecimalDigitNumber"

Console.WriteLine(Char.GetUnicodeCategory(str, 6));

// Вывод: "UppercaseLetter"

}

}

Предлагаю ознакомиться с аналогичными статьями: