Тип char предназначен для хранения символа в кодировке Unicode.
Замечание. Кодировка Unicode является двухбайтной, т.е. каждый символ представлен двумя байтами, а не одним, как это сделано кодировке ASCII, используемой в ОС Windows. Из-за этого могут возникать некоторые проблемы, если вы решите, например, работать посимвольно с файлами, созданными в стандартном текстовом редакторе Блокнот. Способ решения этой проблемы будет рассмотрен в разделе, посвященном работе с файлами.
Символьный тип относится к встроенным типам данных С# и соответствует стандартному классу Сhar библиотеки .Net из пространства имен System. В этом классе определены статические методы, позволяющие задавать вид и категорию символа, а также преобразовывать символ в верхний или нижний регистр, в число. Рассмотрим основные методы:
Метод |
Описание |
GetNumericValue |
Возвращает числовое значение символа, если он является цифрой, и -1 в противном случае. |
GetUnicodeCategory |
Возвращает категорию Unicode-символа.
В Unicode символы разделены на категории, например, цифры (DecimalDigitNumber), римские цифры (LetterNumber), разделители строк (LineSeparator), буквы в нижнем регистре (LowercaseLetter) и т.д. |
IsControl |
Возвращает true, если символ является управляющим (‘\n’, ‘\t’ или ‘\r’). |
IsDigit |
Возвращает true, если символ является десятичной цифрой. |
IsLetter |
Возвращает true, если символ является буквой. |
IsLetterOrDigit |
Возвращает true, если символ является буквой или десятичной цифрой. |
IsLower |
Возвращает true, если символ задан в нижнем регистре. |
IsNumber |
Возвращает true, если символ является числом (десятичным или шестнадцатеричным). |
IsPunctuation |
Возвращает true, если символ является знаком препинания. |
IsSeparator |
Возвращает true, если символ является разделителем. |
IsUpper |
Возвращает true, если символ задан в верхнем регистре. |
IsWhiteSpace |
Возвращает true, если символ является пробельным (пробел, перевод строки, возврат каретки). |
Parse |
Преобразует строку в символ, строка при этом должна состоять из одного символа. |
ToLower |
Преобразует символ в нижний регистр |
ToUpper |
Преобразует символ в верхний регистр |
В следующем примере рассмотрим применение данных методов, для изучения кодировки Unicode:
class Program
{
static void Main()
{
Console.WriteLine("{0,5} {1,8} {2,15}", "код", "символ", "назначение");
for (ushort i = 0; i < 255; i++) // реальной верхней границей для i является значение 65535
{
char a = (char)i;
Console.Write("\n{0,5} {1,8}", i, a);
if (char.IsLetter(a)) Console.Write("{0,20}", "Буква");
if (char.IsUpper(a)) Console.Write("{0,20}", "Верхний регистр");
if (char.IsLower(a)) Console.Write("{0,20}", "Нижний регистр");
if (char.IsControl(a)) Console.Write("{0,20}", "Управляющий символ");
if (char.IsNumber(a)) Console.Write("{0,20}", "Число");
if (char.IsPunctuation(a)) Console.Write("{0,20}", "Знак препинания");
if (char.IsDigit(a)) Console.Write("{0,20}", "Цифра");
if (char.IsSeparator(a)) Console.Write("{0,20}", "Разделитель");
if (char.IsWhiteSpace(a)) Console.Write("{0,20}", "Пробельный символ");
}
}
}
|
Используя символьный тип можно организовать массив символов и работать с ним на основе базового класса Array:
class Program
{
static void Print(char[] a)
{
foreach (char elem in a)
{
Console.Write(elem);
}
Console.WriteLine();
}
static void Main()
{
char[] a = { 'm', 'a', 'Х', 'i', 'M', 'u', 'S', '!', '!', '!' };
Console.WriteLine("Исходный массива:");
Print(a);
for (int x = 0; x < a.Length; x++)
{
if (char.IsLower(a[x]))
{
a[x] = char.ToUpper(a[x]);
}
}
Console.WriteLine("Измененный массив а:");
Print(a);
Console.WriteLine();
//преобразование строки в массив символов
char[] b = "кол около колокола".ToCharArray();
Console.WriteLine("Исходный массив b:");
Print(b);
Array.Reverse(b);
Console.WriteLine("Измененный массив b:");
Print(b);
}
}
|
Результат работы программы:
Исходный массив а:
maXiMuS!!!
Измененный массив а:
MAXIMUS!!!
Исходный массив b:
кол около колокола
Измененный массив b:
алоколок олоко лок
|