[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
srfi-13
- 文字列ライブラリ 文字列に関連する関数の大きなセットを定義しています。
Gaucheでは、それらの関数はいくつかのファイルに分割されており、
(use srfi-13)
というフォームは単にそれらのファイルの
オートロードのセットアップをするだけです。
したがって、スクリプトのスタートアップを遅くするようなことは
ありません。
詳細な仕様とデザインに関する議論については、SRFI-13 (SRFI-13)
を参照して下さい。
このマニュアルは、関数のAPIのリファレンスとして提供されます。
いくつかのSRFI-13の関数は、Gaucheのビルトインになっており、
ここにはリストされていないものもあります。
注意: SRFI-13のドキュメントは、これらの関数を実装するモジュールの
名前を“string-lib”と“string-lib-internals”とすることを推奨しています。
Gaucheでは、一貫性のために“srfi-13”と名付けています。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
文字列ライブラリのAPIにはいくつか共通するものがありますが、 それぞれの関数の説明において繰り返しません。
以下の引数名はその型を暗に表しています。
これらの引数は文字列でなければなりません。
この引数は、文字、文字セットオブジェクト、あるいは1つの文字を引数に取り 真偽値を返す述語のいずれかです。“文字にchar/char-set/predを適用する” の意味はそれぞれ、char/char-set/predが文字ならば与えられた文字と比較される、 char/char-set/predが文字セットならばその文字セットに与えられた文字が 含まれるかを検査する、char/char-set/predが述語ならばそれを与えられた 文字に適用する、となります。“ある文字がchar/char-set/predを満足する” とは、その文字への前述のような適用が真値を返すという意味になります。
SRFI-13の関数の多くは、その操作が実行される対象入力文字列の 範囲を限定する開始インデックスと終了インデックスをオプショナルな 引数として取ります。開始(start番目)の文字は含まれ、 終了(end番目)の文字は含まれません。 これらが指定されるとき、0 <= start <= end <= length of the stringが 満たされなければなりません。startとendのデフォルト値は、 それぞれ0と文字列の長さです。
いくつかの関数は、その名前に“/shared”が付きます。 SRFI-13では、それらの関数はより良いパフォーマンスのために 入力文字列の一部を共有しても良いと定義しています。 Gaucheは、共有文字列という概念を持っていませんし、 それらの関数は単に共有でないバージョンの変名に過ぎません。 しかし、Gaucheは内部的には文字列の保存場所を共有しているので、 一般的には部分文字列をコピーするオーバヘッドについて心配する 必要はありません。
ほとんどの関数は、入力文字列を左から右へと扱います。 いくつかの関数は、その名前に“-right”が付き、右から左へと 扱うものがあります。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[SRFI-13] sが空文字列、""
なら、#t
を返します。
[SRFI-13] sに含まれる全ての文字がchar/char-set/predを
満足するかを検査します。満足するならば、string-every
は
最後に適用されたchar/char-set/predが返した値を戻り値とします。
どの適用も#f
を返した場合は、string-every
はすぐに
#f
を返します。
[SRFI-13] sに含まれるいずれかの文字がchar/char-set/pred
を満足するかを検査します。いずれかの文字が満足するならば、
string-any
はその適用が返した値を戻り値とします。
どの文字もchar/char-set/predを満たさなければ、#f
が返ります。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[SRFI-13] procは整数を1つ引数として取り文字を返す手続きで
なければなりません。string-tabulate
は、そのi番目の
文字が(proc i)
で計算されるような文字列を返します。
(string-tabulate (lambda (i) (integer->char (+ i #x30))) 10) ⇒ "0123456789" |
[SRFI-13] ≡ (list->string (reverse char-list))
.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[SRFI-13] Gaucheでは、引数endがオプショナルであることを除いて、
substring
と同じです。
(substring/shared "abcde" 2) ⇒ "cde" |
[SRFI-13] 文字列sを、文字列targetのtstart番目以降へコピーします。 オプションの引数startとendは、sの範囲を制限します。 コピーされた文字列がtargetの終端を越えたらエラーが通知されます。
(define s (string-copy "abcde")) (string-copy! s 2 "ZZ") s ⇒ "abZZe" |
[SRFI-13] string-take
は、sの最初のnchars文字からなる文字列を返します。
string-drop
は、sから最初のnchars文字からなる文字列を
除いた残りを返します。*-right
バージョンは、文字列の最後から数えます。
返される文字列はいつもsのコピーであり、どの文字も削除されないことが
保証されています。
(string-take "abcde" 2) ⇒ "ab" (string-drop "abcde" 2) ⇒ "cde" (string-take-right "abcde" 2) ⇒ "de" (string-drop-right "abcde" 2) ⇒ "abc" |
[SRFI-13]
文字列sがlenより短い場合は、charがそれぞれ左か
右にパディングされた長さlenの文字列を返します。
sがlenよりも長い場合は、len文字が右端か左端から
取り除かれます。Charのデフォルト値は#\space
です。
startとendが与えられると、sの部分文字列がソース
文字列として使われます。
(string-pad "abc" 10) ⇒ " abc" (string-pad "abcdefg" 3) ⇒ "efg" (string-pad-right "abc" 10) ⇒ "abc " (string-pad "abcdefg" 10 #\+ 2 5) ⇒ "+++++++cde" |
[SRFI-13]
sからchar/char-set/predにマッチする文字を削除します。
String-trim
はsの左から文字を削除し、
string-trim-right
は右から、string-trim-both
は
両端から削除します。
Char/char-set/predのデフォルト値は#[\s]
、つまり空白文字の
文字セットです。startとendが与えられると、sの部分文字列が
ソース文字列として使われます。
(string-trim " abc ") ⇒ "abc " (string-trim-right " abc ") ⇒ " abc" (string-trim-both " abc ") ⇒ "abc" |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[SRFI-13]
<>
s1 s2 &optional start1 end1 start2 end2
<
s1 s2 &optional start1 end1 start2 end2
<=
s1 s2 &optional start1 end1 start2 end2
>
s1 s2 &optional start1 end1 start2 end2
>=
s1 s2 &optional start1 end1 start2 end2
[SRFI-13]
=
s1 s2 &optional start1 end1 start2 end2
<>
s1 s2 &optional start1 end1 start2 end2
<
s1 s2 &optional start1 end1 start2 end2
<=
s1 s2 &optional start1 end1 start2 end2
>
s1 s2 &optional start1 end1 start2 end2
>=
s1 s2 &optional start1 end1 start2 end2
[SRFI-13]
[SRFI-13]
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[SRFI-13]
[SRFI-13]
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[SRFI-13] 文字列sの中で、char/char-set/predにマッチする
最初の要素を探し、そのインデックスを返します。
sの中にchar/char-set/predが見つからない場合は、#f
を
返します。オプションのstartとendは、sの中で検索対象と
なる範囲を制限します。
(string-index "Aloha oe" #\a) ⇒ 4 (string-index "Aloha oe" #[Aa]) ⇒ 0 (string-index "Aloha oe" #[\s]) ⇒ 5 (string-index "Aloha oe" char-lower-case?) ⇒ 1 (string-index "Aloha oe" #\o 3) ⇒ 6 |
ポータビリティよりも速度を重視する場合は、Gaucheのビルトイン手続き
string-scan
(文字列を扱うその他の手続き)を参照して下さい。
[SRFI-13] char/char-set/predにマッチしない最初の要素を探し、
そのインデックスを返します。そのような要素が見つからない場合、#f
を
返します。オプションのstartとendは、sの中で検索対象と
なる範囲を制限します。
[SRFI-13] sの中で、char/char-set/predにマッチする要素の数を カウントします。オプションのstartとendは、sの中で検索対象と なる範囲を制限します。
[SRFI-13] s1の中で、文字列s2を探します。見つかった場合は、
s1でマッチした文字列が始まるインデックスを返します。そうでなければ、
#f
を返します。
オプションのstart1、end1、start2、end2は、
s1とs2の範囲を制限します。
ポータビリティよりも速度を重視する場合は、Gaucheのビルトイン手続き
string-scan
(文字列を扱うその他の手続き)を参照して下さい。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[SRFI-13]
[SRFI-13]
[SRFI-13]
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[SRFI-13] sの文字の位置を逆順にした文字列を返します。
string-reverse!
はsそのものを変更します。
(string-reverse "mahalo") ⇒ "olaham" (string-reverse "mahalo" 3) ⇒ "ola" (string-reverse "mahalo" 1 4) ⇒ "aha" (let ((s (string-copy "mahalo"))) (string-reverse! s 1 5) s) ⇒ "mlahao" |
[SRFI-13] 文字列のリストを連結します。
(string-concatenate '("humuhumu" "nukunuku" "apua" "`a")) ⇒ "humuhumunukunukuapua`a" |
[SRFI-13] string-concatenate
とstring-append
の“共有”
バージョンです。Gaucheでは、これらは単に別名です。
[SRFI-13] string-listを連結する前に逆順にします。 Gaucheでは、“共有”バージョンは全く同じ動作をします。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[SRFI-13] string-map
は、sの全ての文字に対してprocを
適用し、その結果を文字列に集めそれを返します。
一方、string-map!
はsそのものを変更します。
(string-map char-upcase "wikiwiki") ⇒ "WIKIWIKI" (string-map char-upcase "wikiwiki" 4) ⇒ "WIKI" (let ((s (string-copy "wikiwiki"))) (string-map! char-upcase s 4) s) ⇒ "wikiWIKI" |
[SRFI-13]
[SRFI-13]
[SRFI-13]
[SRFI-13]
[SRFI-13]
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[SRFI-13]
[SRFI-13]
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[SRFI-13]
文字列s1のstart1文字目(inclusive)からend1文字目(exclusive)
までを文字列s2に置き換えた文字列を新たに作って返します。s1, s2は
変更されません。
オプショナルな引数start2、end2が与えられた場合は、
s2がまずそれらによって切り取られて置換文字列として使われます。
置き換える隙間の大きさ、つまり(- end1 start1)
は
s2と同じ長さである必要はありません。
実質的に、この手続きは次のコードと等価です。
(string-append (substring s1 0 start1) (substring s2 start2 end2) (substring s1 end1 (string-length s1))) |
[SRFI-13]
文字列 s を、token-set で指定される文字セットで
構成される、空でない最大限連続した文字のシーケンスのそれぞれを
要素とするリストを返します。
token-set のデフォルト値は char-set:graphic
(定義済みの文字セット参照)。
同様の機能を提供する、しかし異なる基準を持つ、Gauche の組み込み手続き
string-split
(文字列を扱うその他の手続き 参照) も見て下さい。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[SRFI-13]
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[SRFI-13]
[SRFI-13]
[SRFI-13]
[SRFI-13]
[SRFI-13]
[SRFI-13]
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] |
This document was generated by Shiro Kawai on November, 22 2009 using texi2html 1.78.