D語言字元


字元是字串的基石。文字系統的任何符號稱為字元:字母,數位,標點符號,空格字元等字母令人困惑的是,字元本身的基石也被稱為字元。

小寫a的整數值是97,數位1的整數值是49,這些數值已經僅僅指派當ASCII碼錶的設計慣例。

下表提供了有關與儲存大小,其目的標準字元型別的詳細資訊。

字元由char型別,它只能容納256個不同的值來表示。如果熟悉其他語言的字元型別,可能已經知道這不是大到足以支援許多書寫系統的符號。

型別 儲存大小 目的
char 1 byte UTF-8 code unit
wchar 2 bytes UTF-16 code unit
dchar 4 bytes UTF-32 code unit and Unicode code yiibai

一些有用的字元函式列表如下

  • isLower:是小寫字元?

  • isUpper:是否為大寫字母?

  • isAlpha: 是一個Unicode字母數位字元(通常,一個字母或數位)?

  • isWhite:是一個空白字元?

  • toLower: 給定字元轉為小寫

  • toUpper: 給定字元轉為大寫

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

讀取字元

我們可以用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);
}

當我們執行上面的程式,我們會得到下面的輸出

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