Next: , Up: Strings and Characters   [Contents][Index]


4.1 String and Character Basics

文字(character)とは、テキスト内の1つの文字を表すLispオブジェクトです。Emacs Lispでは、文字は単なる整数です。ある整数が文字か文字でないかを区別するのは、それが使用される方法だけです。Emacsでの文字表現についての詳細は、Character Codesを参照してください。

文字列(string)とは、固定された文字シーケンスです。これは配列(array)と呼ばれるシーケンス型で、配列長が固定で、1度作成したら変更できないことを意味します(Sequences Arrays Vectorsを参照してください)。Cとは異なり、Emacs Lispの文字列は文字コードを判断することにより終端されません

文字列は配列であり、したがって同様にシーケンスでもあるので、Sequences Arrays Vectorsにドキュメントされている一般的な配列関数やシーケンス関数で、文字列を処理できます。たとえば、文字列内の特定の文字にアクセスしたり変更することができますしかし表示された文字列の幅を計算するために、lengthを使用するべきではないことに注意してください。かわりにstring-widthを使用してください(Size of Displayed Textを参照してください)。

Emacs文字列での非ASCIIにたいすテキスト表現は2つ — ユニバイト(unibyte)とマルチバイト(multibyte)がありますほとんどのLispプログラミングでは、これら2つの表現を気にする必要はありません。詳細は、Text Representationsを参照してください。

キーシーケンスがユニバイト文字列で表されることがあります。ユニバイト文字列がキーシーケンスの場合、範囲128から255までの文字列要素は、範囲128から255の文字コードではなく、メタ文字(これは非常に大きな整数です)を表します。文字列はhyper、super、altで修飾された文字を保持できません。文字列はASCIIコントロール文字を保持できますが、それは他のコントロール文字です。文字列はASCIIコントロール文字の大文字小文字を区別できません。そのような文字をシーケンスに保存したい場合は、文字列ではなくベクターを使用しなければなりません。キーボード入力文字についての情報は、Character Typeを参照してください。

文字列は正規表現を保持するために便利です。string-match (Regexp Searchを参照してください)を使用して、文字列にたいして正規表現をマッチすることもできます。関数match-string (Simple Match Dataを参照してください)と、replace-match (see Replacing Match)は、文字列にたいして正規表現をマッチした後に、文字列を分解、変更するのに便利です。

バッファーのように、文字列は文字列内の文字自身と、その文字にたいするテキストプロパティーを含みます。Text Propertiesを参照してください。文字列からバッファーや他の文字列にテキストをコピーする、すべてのLispプリミティブ(Lisp primitives)は、コピーされる文字のプロパティーもコピーします。

文字列を表示したり、バッファーにコピーする関数についての情報は、Textを参照してください。文字または文字列の構文についての情報は、Character TypeString Typeを参照してください。異なるテキスト表現間で変換したり、文字コードをエンコード、デコードする関数については、Non-ASCII Charactersを参照してください。