Next: , Previous: , Up: 文字列と文字   [Contents][Index]


4.4 文字列の変更

このセクションで説明する処理を介して変更可能な文字列のコンテンツを変更できます。可変性を参照してください。

既存の文字列の内容を変更するもっとも基本的な方法は、aset (配列を操作する関数を参照)を使用する方法です。(aset string idx char)は、stringの文字インデックスidxに、charを格納します。これはstringが純正なASCIIなら必要に応じてマルチバイト文字列(テキストの表現方法を参照)に変換しますが、charがrawバイトではなく非ASCII文字の場合には、たとえばstring-to-multibyte (テキスト表現の変換を参照)を使う等により、stringがマルチバイトになるよう常に保証することをお勧めします。

より強力な関数はstore-substringです:

Function: store-substring string idx obj

この関数は文字インデックスidxで開始される位置にobjを格納することにより、指定されたstringの内容の一部を変更する。objは文字(この場合にはasetとまったく同じように振る舞う)、または(stringより小さい)文字列。objがマルチバイト文字列の場合には、たとえstringが純正のASCII文字列であってもマルチバイト文字列に変更することを推奨する。

既存の文字列の文字数を変更するのは不可能なので、文字インデックスidxを開始位置としたときにobjstringに収まらないような文字数で構成される場合にはエラーとなる。

パスワードを含む文字列をクリアーするときにはclear-stringを使用します:

Function: clear-string string

これはstringをユニバイト文字列にして、内容を0にクリアーする。これによりstringの長さも変更されるだろう。