Programación D - Personajes

Los personajes son los componentes básicos de las cadenas. Cualquier símbolo de un sistema de escritura se llama carácter: letras de alfabetos, números, signos de puntuación, el carácter de espacio, etc. De manera confusa, los componentes básicos de los caracteres también se denominan caracteres.

El valor entero de la minúscula a es 97 y el valor entero del número 1 es 49. Estos valores se asignaron simplemente por convenciones cuando se diseñó la tabla ASCII.

La siguiente tabla menciona los tipos de caracteres estándar con sus tamaños de almacenamiento y propósitos.

Los caracteres están representados por el tipo char, que solo puede contener 256 valores distintos. Si está familiarizado con el tipo de caracteres de otros idiomas, es posible que ya sepa que no es lo suficientemente grande para admitir los símbolos de muchos sistemas de escritura.

Tipo Tamaño de almacenamiento Propósito
carbonizarse 1 byte Unidad de código UTF-8
wchar 2 bytes Unidad de código UTF-16
dchar 4 bytes Unidad de código UTF-32 y punto de código Unicode

Algunas funciones de carácter útiles se enumeran a continuación:

  • isLower - ¿Determina si es un carácter en minúsculas?

  • isUpper - ¿Determina si es un carácter en mayúscula?

  • isAlpha - ¿Determina si es un carácter alfanumérico Unicode (generalmente, una letra o un número)?

  • isWhite - ¿Determina si es un carácter de espacio en blanco?

  • toLower - Produce la minúscula del carácter dado.

  • toUpper - Produce las mayúsculas del carácter dado.

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

Cuando se compila y ejecuta el código anterior, produce el siguiente 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

Leer personajes en D

Podemos leer caracteres usando readf como se muestra a continuación.

readf(" %s", &letter);

Dado que la programación D admite Unicode, para leer caracteres Unicode, necesitamos leer dos veces y escribir dos veces para obtener el resultado esperado. Esto no funciona en el compilador en línea. El ejemplo se muestra a continuación.

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

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

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