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: ğ