C#. Символьный тип данных char. Структура System.Char. Методы структуры System.Char




Символьный тип данных char. Структура System.Char. Методы структуры System.Char


Содержание


Поиск на других ресурсах:

1. Особенности типа данных char. Внутреннее представление. Структура System.Char

В.NET Framework тип данных char введен для представления отдельного символа. Каждый символ кодируется в формате Unicode. Формат Unicode предусматривает использование кодовой формы UTF-16, в которой каждый символ представлен 16-битным числовым положительным значением.

Разрядность в 16 бит (а не 8 бит, как было раньше) объясняется тем, что нужно обеспечить представление широких наборов символов в некоторых языках. Например, в китайском языке количество используемых символов невозможно поместить в количество возможных вариантов значений, которые дает 8-битное представление символа.

В языке C# каждое 16-битное значение представлено диапазоном от 0x0000 до 0xFFFF и размещается в структуре System.Char.

Структура System.Char представляет методы, которые группируются по следующим признакам:

  • сравнение объектов типа char;
  • конвертирование текущего char-объекта в объект другого типа;
  • преобразование регистра символа;
  • определение категории текущего символа.

 

2. Объявление переменной типа char. Примеры символьных констант типа char

Тип данных char может представлять разные виды символов:

  • символы которые отображаются на клавиатуре;
  • специальные управляющие символы, такие как ‘\n’, ‘\b’, ‘\t’ и прочие.

Ниже приведены примеры объявления переменной типа char и использование некоторых символьных констант

char c1; // Объявление переменной типа char
char c2 = '\x173'; // Объявление с инициализацией

c1 = ' '; // символ пробел
c1 = '\x20'; // символ пробел в виде кода в 16-й системе исчисления

c2 = '\n'; // символ новой строки
c2 = 'Z'; // литера Z верхнего регистра
c2 = 'z'; // литера z нижнего регистра

 

3. Как определить код символа типа char. Пример

Чтобы определить код символа типа char нужно реализовать операцию явного приведения типа, как показано ниже.

char c = '\x20'; // Объявление с инициализацией
uint code;
code = (uint)c; // code = 32 (в десятичной системе исчисления)

c = '\n';
code = (uint)c; // code = 10

c = 'D';
code = (uint)c; // code = 68

 

4. Примеры методов, которые реализованы в структуре типа Char

Тип char есть псевдонимом структуры типа System.Char, которая имеет ряд методов. Ниже перечислены основные из них.

4.1. Метод IsControl(). Определение, есть ли символ управляющим символом

Метод IsControl() определяет, относится ли символ к категории управляющих символов в соответствии с кодировкой Unicode. К управляющим символам относятся ‘\n’, ‘\t’, ‘\b’ и прочие. Метод возвращает значение типа bool и имеет две перегруженных реализации.

Общая форма первой реализации метода следующая:

bool char.IsControl(char c);

здесь

  • c – проверяемый символ. Если символ c есть управляющим, то функция возвращает true.

Общая форма второй реализации метода следующая:

bool char.IsControl(string s, int index);

здесь

  • s – строка, в которой происходит проверка;
  • index – позиция символа в строке s, для которого осуществляется проверка. Если символ c есть управляющим, то функция возвращает true.

Пример.

// Определить, есть ли управляющим
bool fRes;
fRes = char.IsControl('.'); // fRes = false
fRes = char.IsControl('\t'); // fRes = true
fRes = char.IsControl('\\'); // fRes = false
fRes = char.IsControl('\n'); // fRes = true

// Есть ли символ в заданной позиции заданной строки управляющим
fRes = char.IsControl("abcd\nghi", 4); // fRes = true
fRes = char.IsControl("abcd\nghi", 3); // fRes = false

 

4.2. Метод IsDigit(). Определение, есть ли символ цифрой

Метод IsDigit() предназначен для определения того, является ли символ цифрой. Метод имеет две перегруженных реализации:

bool char.IsDigit(char c);
bool char.IsDigit(string s, int index);

здесь

  • c – проверяемый символ;
  • s – строка, в которой проверяется символ в позиции index. Указанный символ имеет обозначение s[index].

Если указанный символ есть цифрой, то функция возвращает true.

Пример.

// 2. Определить, есть ли символ цифрой
bool fRes;
char c = '7';
fRes = System.Char.IsDigit(c); // fRes = true
fRes = char.IsDigit('a'); // fRes = false
fRes = char.IsDigit('.'); // fRes = false
fRes = char.IsDigit("550", 0); // fRes = true
fRes = char.IsDigit("A50", 0); // fRes = false

 

4.3. Метод IsLetter(). Определение, есть ли символ буквеным

Метод IsLetter() возвращает true, если заданный символ есть буквеным. Символ задается одной из двух перегруженных реализаций метода

bool char.IsLetter(char c);
bool char.IsLetter(string s, int index);

Пример.

// Определить, есть ли символ буквеным
bool fRes;
fRes = char.IsLetter('z'); // fRes = true
fRes = char.IsLetter(';'); // fRes = false
fRes = System.Char.IsLetter('\n'); // fRes = false
fRes = char.IsLetter("\na+-8", 1); // fRes = true
fRes = char.IsLetter("\na+-8", 2); // fRes = false

 

4.4. Метод IsLower(). Определение, находится ли символ в нижнем регистре

Метод IsLower() возвращает значение true, если заданный символ находится в нижнем регистре. Метод имеет две перегруженных реализации

bool char.IsLower(char c);
bool char.IsLower(string s, int index);

здесь

  • c – проверяемый символ;
  • s – строка, в которой определяется символ в позиции index.

Пример.

// Определить, находится ли символ в нижнем регистре
bool fRes;
fRes = char.IsLower('Z'); // fRes = false
fRes = char.IsLower(';'); // fRes = false
fRes = char.IsLower("hELLO wORLD!", 0); // fRes = true
fRes = char.IsLower("ABCD", 2); // fRes = false

 

4.5. Метод IsUpper(). Определение, находится ли символ в верхнем регистре

Метод IsUpper() предназначен для определения, находится ли символ в верхнем регистре. В этом случае метод возвращает true. Метод имеет две перегруженных реализации

bool char.IsUpper(char c);
bool char.IsUpper(string s, int index);

здесь

  • c – проверяемый символ;
  • s – строка, в которой проверяется символ в позиции index. Проверяемый символ имеет значение s[index].

Пример.

// Определить, находится ли символ в верхнем регистре
bool fRes;
fRes = char.IsUpper('Ю'); // fRes = true, кириличные символы также обрабатываются
fRes = char.IsUpper('ю'); // fRes = false

fRes = char.IsUpper("abc+DEF", 4); // fRes = true

 

4.6. Метод IsNumber(). Определение, есть ли символ числом

Метод IsNumber() определяет, есть ли символ числом. Если символ есть числом, метод возвращает true. Метод имеет две перегруженных реализации:

bool char.IsNumber(char c);
bool char.IsNumber(string s, int index);

здесь

  • c – проверяемый символ;
  • s – строка, в которой находится проверяемый символ. Позиция символа задается параметром index.

Пример.

// Определить, есть ли символ числом
bool fRes;
fRes = char.IsNumber('8'); // fRes = true
fRes = char.IsNumber('\t'); // fRes = false

fRes = char.IsNumber("2+2=5", 2); // fRes = true
fRes = char.IsNumber("2+2=4", 3); // fRes = false

 

4.7. Метод IsSeparator(). Определяет, если ли символ разделителем

Метод IsSeparator() используется для определения того, относится ли символ к категории разделителей в соответствии с кодировкой Unicode. Если символ есть разделителем, то метод возвращает true.
Метод имеет две перегруженных реализации:

bool char.IsSeparator(char c);
bool char.IsSeparator(string s, int index);

здесь

  • c – проверяемый символ;
  • s – строка, в которой в позиции index получается символ, который нужно проверить.

Пример.

// Определить, есть ли символ разделителем
fRes = char.IsSeparator(' '); // fRes = true
fRes = char.IsSeparator(','); // fRes = false
fRes = char.IsSeparator('\n'); // fRes = false
fRes = char.IsSeparator('\t'); // fRes = false

 

4.8. Метод IsWhiteSpace(). Определяет, есть ли символ пробелом

Метод IsWhiteSpace() определяет, относится ли символ к категории пробельных символов в соответствии с кодировкой Unicode. К пробельным символам можно отнести пробел, символ табуляции, символ новой строки и т.п. В случае успеха метод возвращает true.

Существует две реализации метода:

bool char.IsWhiteSpase(char c);
bool char.IsWhiteSpase(string s, int index);

здесь

  • c – символ, который проверяется;
  • s – строка, в которой в позиции index определяется символ, который проверяется. Значение символа определяется как s[index].

Пример.

// Определить, есть ли символ пробелом
bool fRes;
fRes = char.IsWhiteSpace('\t'); // fRes = true
fRes = char.IsWhiteSpace('\n'); // fRes = true
fRes = char.IsWhiteSpace(' '); // fRes = true
fRes = char.IsWhiteSpace('\b'); // fRes = false
fRes = char.IsWhiteSpace(';'); // fRes = false

 

4.9. Метод ToLower(). Переводит символ в нижний регистр

Метод ToLower() используется для перевода символа в нижний регистр (если возможно). Метод возвращает преобразованный символ. В соответствии с документацией .NET Framework метод имеет две перегруженных реализации

char char.ToLower(char c);
char char.ToLower(char c, System.Globalization.CultureInfo culture);

здесь

  • c – символ, который переводится в нижний регистр;
  • culture – информация о культуре, которая размещается в классе System.Globalization.Culture. Культура описывает имена для культуры, систему записи, используемый календарь, порядок сортировки а также форматирование для строк и дат.

Пример.

// Перевод символа в нижний регистр
char c1, c2;
c2 = 'A';
c1 = char.ToLower(c2); // c1 = 'a'
c1 = char.ToLower(c2, CultureInfo.CurrentCulture); // c1 = 'a'
c1 = char.ToLower(c2, CultureInfo.InvariantCulture); // c1 = 'a'
c1 = char.ToLower('+'); // c1 = '+'

 

4.10. Метод ToUpper(). Переводит символ в верхний регистр

Метод ToUpper() предназначен для перевода указанного символа в верхний регистр (если возможно). Если преобразование возможно (символ имеет представление в двух регистрах), метод возвращает символ в верхнем регистре. Если невозможно выполнить преобразование, то возвращается значение исходного символа. В соответствии с документацией .NET Framework метод имеет две перегруженных реализации:

char char.ToUpper(char c);
char char.ToUpper(char c,

здесь

  • c – символ, который переводится в нижний регистр;
  • culture – информация о культуре, которая размещается в классе System.Globalization.Culture. Культура описывает имена для культуры, систему записи, используемый календарь, порядок сортировки а также форматирование для строк и дат.

Пример.

// Перевод символа в верхний регистр
char c1, c2;
c2 = 'k';
c1 = char.ToUpper(c2); // c1 = 'K'
c1 = char.ToUpper('f'); // c1 = 'F'
c1 = char.ToUpper('='); // c1 = '='

 

5. Константы MinValue, MaxValue

В структуре System.Char введены две константы:

  • MinValue – представляет минимально допустимое значение типа char, которое равно ‘\0’;
  • MaxValue – представляет максимально допустимое значение типа char, которое равно ‘\uffff’.

Обращение к каждой константе в программе может быть таким

char.MinValue
char.MaxValue

 


Связанные темы