Previous: Functions and Variables for characters, Up: stringproc   [Contents][Index]

79.4 Functions and Variables for strings

関数: stringp (obj)

もしobjが文字列なら、trueを返します。 例はイントロダクションを参照してください。

関数: charat (string, n)

stringn番目の文字を返します。 stringの一番目の文字はn = 1で返されます。

(%i1) charat("Lisp",1);
(%o1)                           L
関数: charlist (string)

stringの文字すべてのリストを返します。

(%i1) charlist("Lisp");
(%o1)                     [L, i, s, p]
(%i2) %[1];
(%o2)                           L
関数: eval_string (str)

文字列strをMaxima式としてパースし、評価します。 文字列strは終端子(ドル記号$またはセミコロン;) を持つかもしれませんし持たないかもしれません。

もし複数あるなら、最初の式だけがパースされ、評価されます。

もしstrが文字列でないならエラーが出力されます。

例:

(%i1) eval_string ("foo: 42; bar: foo^2 + baz");
(%o1)                       42
(%i2) eval_string ("(foo: 42, bar: foo^2 + baz)");
(%o2)                   baz + 1764

parse_stringも参照してください。

関数: parse_string (str)

文字列strをMaxima式としてパースします(評価しません)。 文字列strは終端子(ドル記号$またはセミコロン;) を持つかもしれませんし持たないかもしれません。

もし複数あるなら、最初の式だけがパースされ、評価されます。

もしstrが文字列でないならエラーが出力されます。

例:

(%i1) parse_string ("foo: 42; bar: foo^2 + baz");
(%o1)                    foo : 42
(%i2) parse_string ("(foo: 42, bar: foo^2 + baz)");
                                   2
(%o2)          (foo : 42, bar : foo  + baz)

eval_stringも参照してください。

関数: scopy (string)

stringのコピーを新しい文字列として返します。

関数: sdowncase (string)
関数: sdowncase (string, start)
関数: sdowncase (string, start, end)

supcaseと同様ですが、大文字が小文字に変換されます。

関数: sequal (string_1, string_2)

もしstring_1string_2が同じ長さで、同じ文字を含むなら、 trueを返します。

関数: sequalignore (string_1, string_2)

sequalと同様ですが、文字の大小を無視します。

関数: sexplode (string)

sexplodeは関数charlistの別名です。

関数: simplode (list)
関数: simplode (list, delim)

simplodeは式のリストを取り、それらを結合して文字列にします。 もしデリミタdelimが指定されないなら、 simplodeはデリミタを使いません。 delimは任意の文字列を取り得ます。

(%i1) simplode(["xx[",3,"]:",expand((x+y)^3)]);
(%o1)             xx[3]:y^3+3*x*y^2+3*x^2*y+x^3
(%i2) simplode( sexplode("stars")," * " );
(%o2)                   s * t * a * r * s
(%i3) simplode( ["One","more","coffee."]," " );
(%o3)                   One more coffee.
関数: sinsert (seq, string, pos)

substring (string, 1, pos - 1)と 文字列seqsubstring (string, pos) の結合となる文字列を返します。 stringの一番目の文字は位置1にあることに注意してください。

(%i1) s: "A submarine."$
(%i2) concat( substring(s,1,3),"yellow ",substring(s,3) );
(%o2)                  A yellow submarine.
(%i3) sinsert("hollow ",s,3);
(%o3)                  A hollow submarine.
関数: sinvertcase (string)
関数: sinvertcase (string, start)
関数: sinvertcase (string, start, end)

位置startからendまでのそれぞれの文字を逆順にすることを除いて stringを返します。 もしendが与えられないなら、 startから stringの終わりまでのすべての文字列が置き換えられます。

(%i1) sinvertcase("sInvertCase");
(%o1)                      SiNVERTcASE
関数: slength (string)

stringの中の文字の数を返します。

関数: smake (num, char)

num個の文字charを持つ新しい文字列を返します。

(%i1) smake(3,"w");
(%o1)                          www
関数: smismatch (string_1, string_2)
関数: smismatch (string_1, string_2, test)

string_1string_2が異なるstring_1の最初の文字の位置、または falseを返します。 マッチングのデフォルトのテスト関数はsequalです。 もしsmismatchが文字の大小を無視なければいけないなら、 テストとしてsequalignoreを使ってください。

(%i1) smismatch("seven","seventh");
(%o1)                           6
関数: split (string)
関数: split (string, delim)
関数: split (string, delim, multiple)

stringのすべてのトークンのリストを返します。 それぞれのトークンはパースされていない文字列です。 splitdelimをデリミタとして使います。 もしdelimが与えられないなら、 スペース文字がデフォルトのデリミタです。 multipleはデフォルトでtrueのブーリアン変数です。 重複デリミタが1つとして読まれます。 これは、 もしタブが複数スペース文字として保存されているなら、 役立ちます。 もしmultiplefalseに設定されるなら、 それぞれのデリミタが有効です。

(%i1) split("1.2   2.3   3.4   4.5");
(%o1)                 [1.2, 2.3, 3.4, 4.5]
(%i2) split("first;;third;fourth",";",false);
(%o2)               [first, , third, fourth]
関数: sposition (char, string)

stringの中で、charとマッチする最初の文字の位置を返します。 stringの一番目の文字は位置1にあります。 文字の大小を無視した文字のマッチに関しては, ssearchを参照してください。

関数: sremove (seq, string)
関数: sremove (seq, string, test)
関数: sremove (seq, string, test, start)
関数: sremove (seq, string, test, start, end)

string同様文字列を返しますが、 seqとマッチする部分文字列すべてなしに返します。 マッチのデフォルトのテスト関数はsequalです。 もしsremoveseqを検索する間文字の大小を無視しなければいけないなら、 テストとしてsequalignoreを使ってください。 探索を限定するにはstartendを使ってください。 stringの一番目の文字は位置1にあることに注意してください。

(%i1) sremove("n't","I don't like coffee.");
(%o1)                   I do like coffee.
(%i2) sremove ("DO ",%,'sequalignore);
(%o2)                    I like coffee.
関数: sremovefirst (seq, string)
関数: sremovefirst (seq, string, test)
関数: sremovefirst (seq, string, test, start)
関数: sremovefirst (seq, string, test, start, end)

seqとマッチする最初の文字列だけが削除されることを除いて、 sremove同様です。

関数: sreverse (string)

stringの文字すべてが逆順の文字列を返します。

関数: ssearch (seq, string)
関数: ssearch (seq, string, test)
関数: ssearch (seq, string, test, start)
関数: ssearch (seq, string, test, start, end)

文字列seqとマッチするstringの最初の部分文字列の位置を返します。 マッチのためのデフォルトのテスト関数はsequalです。 もしssearchが文字の大小を無視しなければいけないなら、 テストとしてsequalignoreを使ってください。 検索を限定するには、startendを使ってください。 stringの一番目の文字は位置1にあることに注意してください。

(%i1) ssearch("~s","~{~S ~}~%",'sequalignore);
(%o1)                                  4
関数: ssort (string)
関数: ssort (string, test)

test (c, d)false、かつ、test (d, c)trueであるような2つの連続する文字cdがないような順で stringの文字すべてを含む文字列を返します。

ソートのためのデフォルトのテスト関数はclesspです。 テスト関数一式は{clessp, clesspignore, cgreaterp, cgreaterpignore, cequal, cequalignore}です。

(%i1) ssort("I don't like Mondays.");
(%o1)                    '.IMaddeiklnnoosty
(%i2) ssort("I don't like Mondays.",'cgreaterpignore);
(%o2)                 ytsoonnMlkIiedda.'   
関数: ssubst (new, old, string)
関数: ssubst (new, old, string, test)
関数: ssubst (new, old, string, test, start)
関数: ssubst (new, old, string, test, start, end)

stringの中のoldにマッチするすべての部分文字列を newで置き換えた文字列を返します。 oldnewは同じ長さである必要はありません。 マッチのためのデフォルトのテスト関数はsequalです。 もしssubstがoldを検索する間大文字小文字を無視すべきなら、 テストとしてsequalignoreを使ってください。 検索を制限するには、startendを使ってください。 stringの一番目の文字は位置1にあることに注意してください。

(%i1) ssubst("like","hate","I hate Thai food. I hate green tea.");
(%o1)          I like Thai food. I like green tea.
(%i2) ssubst("Indian","thai",%,'sequalignore,8,12);
(%o2)         I like Indian food. I like green tea.
関数: ssubstfirst (new, old, string)
関数: ssubstfirst (new, old, string, test)
関数: ssubstfirst (new, old, string, test, start)
関数: ssubstfirst (new, old, string, test, start, end)

oldとマッチする最初の部分文字列だけを置き換えることを除いて、 substと同様です。

関数: strim (seq,string)

stringの両端からseqに現れるすべての文字を除いた文字列を返します。

(%i1) "/* comment */"$
(%i2) strim(" /*",%);
(%o2)                        comment
(%i3) slength(%);
(%o3)                           7
関数: striml (seq, string)

stringの左端だけトリムすることを除いて strimと同様です。

関数: strimr (seq, string)

stringの右端だけトリムすることを除いて strimと同様です。

関数: substring (string, start)
関数: substring (string, start, end)

位置startで始まり位置endで終わる stringの部分文字列を返します。 位置endの文字は含まれません。 もしendが与えられないなら、部分文字列は文字列の残りを含みます。 stringの一番目の文字は位置1にあることに注意してください。

(%i1) substring("substring",4);
(%o1)                        string
(%i2) substring(%,4,6);
(%o2)                          in
関数: supcase (string)
関数: supcase (string, start)
関数: supcase (string, start, end)

stringの位置startからendまでの小文字を対応する大文字に置き換えた 文字列を返します。 もしendが与えられないなら、 startからstringの終わりまでのすべての小文字が置き換えられます。

(%i1) supcase("english",1,2);
(%o1)                        English
関数: tokens (string)
関数: tokens (string, test)

stringから抽出されたトークンのリストを返します。 トークンは、文字があるテスト関数を満たす部分文字列です。 もしテストが与えられないなら、 constituentがデフォルトテストとして使われます。 {constituent, alphacharp, digitcharp, lowercasep, uppercasep, charp, characterp, alphanumericp}はテスト関数一式です。 (The Lisp-version of tokensのLispバージョンはPaul Grahamによって書かれました。 ANSI Common Lisp, 1996, page 67.)

(%i1) tokens("24 October 2005");
(%o1)                  [24, October, 2005]
(%i2) tokens("05-10-24",'digitcharp);
(%o2)                     [05, 10, 24]
(%i3) map(parse_string,%);
(%o3)                      [5, 10, 24]

Previous: Functions and Variables for characters, Up: stringproc   [Contents][Index]