D Programação - Personagens

Os personagens são os blocos de construção das cordas. Qualquer símbolo de um sistema de escrita é chamado de caractere: letras do alfabeto, numerais, sinais de pontuação, o caractere de espaço, etc. É confuso, os blocos de construção dos próprios caracteres são chamados de caracteres também.

O valor inteiro da minúscula a é 97 e o valor inteiro do numeral 1 é 49. Esses valores foram atribuídos apenas por convenções quando a tabela ASCII foi projetada.

A tabela a seguir menciona os tipos de caracteres padrão com seus tamanhos e propósitos de armazenamento.

Os caracteres são representados pelo tipo char, que pode conter apenas 256 valores distintos. Se você está familiarizado com o tipo char de outras linguagens, você já deve saber que não é grande o suficiente para suportar os símbolos de muitos sistemas de escrita.

Tipo Tamanho de armazenamento Objetivo
Caracteres 1 byte Unidade de código UTF-8
wchar 2 bytes Unidade de código UTF-16
dchar 4 bytes Unidade de código UTF-32 e ponto de código Unicode

Algumas funções úteis de caractere estão listadas abaixo -

  • isLower - Determina se é um caractere minúsculo?

  • isUpper - Determina se um caractere maiúsculo?

  • isAlpha - Determina se um caractere alfanumérico Unicode (geralmente, uma letra ou um numeral)?

  • isWhite - Determina se um caractere de espaço em branco?

  • toLower - Produz as minúsculas do caractere fornecido.

  • toUpper - Produz as letras maiúsculas do caractere fornecido.

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('ı')); 
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

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

Lendo caracteres em D

Podemos ler caracteres usando readf como mostrado abaixo.

readf(" %s", &letter);

Como a programação em D suporta Unicode, para ler caracteres Unicode, precisamos ler duas vezes e escrever duas vezes para obter o resultado esperado. Isso não funciona no compilador online. O exemplo é mostrado abaixo.

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); 
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

Please enter a letter: ğ 
The letter that has been read: ğ