文字やストリングは、一方から他方に変換したり integer に変換することができま す。 format (セクション 5.3 [format]、ページ 45) や prin1-to-string (セクショ ン 16.2.1 [prin1-to-string]、ページ 134) を用いることで Lisp オブジェクトをス トリングに変換することができます。 read-from-string (セクション 16.1.1 [read- from-string]、ページ 129) を用いることで Lisp オブジェクトの print 表現をオブ ジェクトに変換することもできます。
(アーギュメントの文字の) Emacs 標準表記 (のストリング)を返す関数 single-key- description と text-char-description に関しては、チャプター 21 [ドキュメンテー ション]、ページ 193 を参照して下さい。これらの関数は(主に)オンラインドキュメン テーションで用いられます。
Function: char-to-string character
この関数は、 1 文字のストリングを新しく返します。 character modulo 256 の 値を用います。
(char-to-string ?x) => "x" (char-to-string (+ 256 ?x) => "x"
Function: string-to-char string
この関数は、ストリングの最初の文字を返します。ストリングが empty の場合、0 を返します (これはストリングが文字 ASCII 0 で始まっている場合の結果と同じ になります)。
(string-to-char "xyz") => 120 (string-to-char "") => 0
(string-to-char "\000") => 0
Function: int-to-string integer
この関数は、 integer の数字(訳注:digit)からなるストリングを返します。正の integer は符号を付けないストリングを返し、負の integer は - 符号を頭に付け たストリングを返します。
(int-to-string 256) => "256" (int-to-string -23) => "-23"
Function: string-to-int string
この関数は、 string 中の文字を数字として読み込み、その integer 値を返しま す。
ストリングはその最初の文字から読み込まれ、数字でない文字になるまで読み込ま れます。最初の文字が数字(訳注:digit)でない場合、0 を返します。
(string-to-int "256") => 256 (string-to-int "25 is a perfect square.") => 25 (string-to-int "X256") => 0
Function: format string &rest objects
この関数は、 objects の print 表現で(その)変換指示シーケンスを置き換えた string の文字からなるストリングを(新しく)返します。変換指示は(順に)それに
対するオブジェクトに対して用いられます。変換指示が余分に存在する場合、その 動きを予想することはできません。オブジェクトが余分に存在する場合、その分は 無視します。
文字 % が変換指示を始め、それに続く文字が "オブジェクトをどのように表現す るか" を示します。
`s' オブジェクトの print 表現で置き換える。対応するオブジェクトが存在 しない場合、empty ストリングを用いる。 `b' integer の 2 進数表現で置き換える。 (しかし常に "b" のように見える が!!) `o' integer の 8 進数表現で置き換える。 `d' integer の 10 進数表現で置き換える。 `x' integer の 16 進数表現で置き換える。 `c' オブジェクトがそれにマップする文字の print 表現で置き換える(この マッピングとは何??)。 `%' % を 1つこのストリングに入れる。
これ以外の変換文字は `Invalid format operation' エラーになります。
これらの指示(訳注:specification)文字は全て、(そのオブジェクトに対して print しなくてはいけない文字の数の最小値を指定する) オプショナルな数値のプ レフィックスを(文字の前に)持つことができます。オブジェクトの print 表現が これより少ない数の文字しか含まない場合、スペースを詰めます。プレフィックス が正の場合、パディングを左側で行ない、負の場合、右側で行ないます。プレ フィックスが何であれ、切りつめ(訳注:truncate)を行なうことはありません。こ れにより、プログラマはそのオブジェクトの print 表現が何文字か知らなくても 相互の間隔を指定することができます。
(format "The length of %s is: %d" '(a b c) (length '(a b c))) "The length of (a b c) is: 3"
(format "The %% character %c has value %d" ?x ?x) => "The % character x has value 120"
(format "
The numbers: %5d and %8d enjoy %9s good %6s, while the numbers: %5d and %8d enjoy %9s good %6s." 1 97 'drinking 'wines -564 12399876 'eating 'food) => " The numbers: 1 and 97 enjoy drinking good wines, while the numbers: -564 and 12399876 enjoy eating good food.