Тип 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"
}
}
0 коммент.:
Отправить комментарий