Символы


Предыдущая страница
Следующая страница  

Символы – это строительные блоки строк. В системе письма всё называется символом: буквы алфавитов, цифры, знаки препинания, символ пробела и т.д. Несколько добавляет путаницы тот факт, что строительные блоки самих символов также называются символами.

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

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

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

Тип Занимаемый размер Цель
char 1 байт кодовый блок UTF-8
wchar 2 байта кодовый блок UTF-16
dchar 4 байта кодовый блок UTF-32 и кодовая точка Unicode

Ниже перечислены некоторые полезные функции, работающие с символами:

import std.stdio;
import std.uni;

void main() { 
   writeln("ğ - строчная буква? ", isLower('ğ')); 
   writeln("Ş - строчная буква? ", isLower('Ş'));  
   
   writeln("İ - прописная буква? ", isUpper('İ')); 
   writeln("ç - прописная буква? ", isUpper('ç')); 
   
   writeln("z - это алфавино-цифровой символ? ",       isAlpha('z'));  
   writeln("Перевод строки является пробельным символом? ",  isWhite('\n')); 
   
   writeln("Нижнее подчёркивание является пробельным символом? ", isWhite('_'));  
   
   writeln("Буква Ğ в нижнем регистре: ", toLower('Ğ')); 
   writeln("Буква İ в нижнем регистре: ", toLower('İ')); 
   
   writeln("Буква ş в верхнем регистре: ", toUpper('ş')); 
   writeln("Буква ı в верхнем регистре: ", toUpper('ı')); 
}

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

ğ - строчная буква? true
Ş - строчная буква? false
İ - прописная буква? true
ç - прописная буква? false
z - это алфавино-цифровой символ? true
Перевод строки является пробельным символом? true
Нижнее подчёркивание является пробельным символом? false
Буква Ğ в нижнем регистре: ğ
Буква İ в нижнем регистре: i
Буква ş в верхнем регистре: Ş
Буква ı в верхнем регистре: I

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

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

readf(" %s", &letter);

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

import std.stdio;

void main() { 
   char firstCode; 
   char secondCode; 
   
   write("Пожалуйста, введите букву: "); 
   readf(" %s", &firstCode); 
   readf(" %s", &secondCode); 
   
   writeln("Буква, которая была прочитана: ", firstCode, secondCode); 
} 

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

Пожалуйста, введите букву: ğ 
Буква, которая была прочитана: ğ

Что-то нормально у меня эта программа так и не заработала. Возможно, в Linux было бы больше толку – прим. пер.


Предыдущая страница
Следующая страница