Учебники

D Программирование — Персонажи

Символы являются строительными блоками строк. Любой символ системы письма называется символом: буквы алфавита, цифры, знаки пунктуации, символ пробела и т. Д. Смущает то, что строительные блоки самих символов также называются символами.

Целочисленное значение строчной буквы a равно 97, а целочисленное значение цифры 1 равно 49. Эти значения были назначены просто соглашениями, когда была разработана таблица ASCII.

В следующей таблице упоминаются стандартные типы символов с указанием их размеров и назначения.

Символы представлены типом char, который может содержать только 256 различных значений. Если вы знакомы с типом char из других языков, вы, возможно, уже знаете, что он недостаточно велик для поддержки символов многих систем письма.

Тип Размер хранилища Цель
голец 1 байт Кодовый блок UTF-8
WCHAR 2 байта Кодовый блок UTF-16
dchar 4 байта Кодовая единица UTF-32 и кодовая точка Unicode

Некоторые полезные символьные функции перечислены ниже —

  • isLower — определяет, является ли символ нижнего регистра?

  • isUpper — Определяет, является ли символ в верхнем регистре?

  • isAlpha — Определяет, является ли буквенно-цифровой символ Unicode (как правило, буква или цифра)?

  • isWhite — определяет, является ли символ пробела?

  • toLower — производит нижний регистр данного символа.

  • toUpper — производит верхний регистр данного символа.

isLower — определяет, является ли символ нижнего регистра?

isUpper — Определяет, является ли символ в верхнем регистре?

isAlpha — Определяет, является ли буквенно-цифровой символ Unicode (как правило, буква или цифра)?

isWhite — определяет, является ли символ пробела?

toLower — производит нижний регистр данного символа.

toUpper — производит верхний регистр данного символа.

Live Demo

import std.stdio;
import std.uni;

void main() { 
   writeln("Is ğ lowercase? ", isLower('ğ')); 
   writeln("Is Ş lowercase? ", isLower('Ş'));  
   
   writeln("Is İ uppercase? ", isUpper('İ')); 
   writeln("Is ç uppercase? ", isUpper('ç')); 
   
   writeln("Is z alphanumeric? ",       isAlpha('z'));  
   writeln("Is new-line whitespace? ",  isWhite('\n')); 
   
   writeln("Is underline whitespace? ", isWhite('_'));  
   
   writeln("The lowercase of Ğ: ", toLower('Ğ')); 
   writeln("The lowercase of İ: ", toLower('İ')); 
   
   writeln("The uppercase of ş: ", toUpper('ş')); 
   writeln("The uppercase of ı: ", toUpper('ı')); 
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —

Is ğ lowercase? true 
Is Ş lowercase? false 
Is İ uppercase? true 
Is ç uppercase? false
Is z alphanumeric? true 
Is new-line whitespace? true 
Is underline whitespace? false 
The lowercase of Ğ: ğ 
The lowercase of İ: i 
The uppercase of ş: Ş 
The uppercase of ı: I 

Чтение символов в D

Мы можем читать символы, используя readf, как показано ниже.

readf(" %s", &letter);

Поскольку D-программирование поддерживает Unicode, для чтения символов Unicode нам нужно читать дважды и писать дважды, чтобы получить ожидаемый результат. Это не работает на онлайн-компиляторе. Пример показан ниже.

import std.stdio;

void main() { 
   char firstCode; 
   char secondCode; 
   
   write("Please enter a letter: "); 
   readf(" %s", &firstCode); 
   readf(" %s", &secondCode); 
   
   writeln("The letter that has been read: ", firstCode, secondCode); 
} 

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —