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

 


Зв’язані теми