外部関数/ssu
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#br
#br
----
''Mc157-1よりssu関数が里々内部に統合された事に伴い、最新...
本記事の内容は以前までの古いものになります。
----
#br
#br
#br
*注意点 [#o9646af5]
%%引数にまだ何も入ってない変数を入れるとエラーが出るので...
この問題は整備班カスタム版里々で解消されました。
ssuは[[SAORI]]なので、予め[[satori_conf.txt>ファイル構成#...
テンプレートゴーストを改造して使う場合、恐らく大半が既に...
ですので、ポストと狛犬の辞書を改変してゴーストを作ってい...
choice,saori/ssu.dll,choice
join,saori/ssu.dll,join
また、Mc129以降なら更に下記の追加をお勧めします。
reverse,saori/ssu.dll,reverse
at,saori/ssu.dll,at
lsimg,saori/ssu.dll,lsimg
mkdir,saori/ssu.dll,mkdir
Mc150-1以降で追加
compare_case,saori/ssu.dll,compare_case
compare_head_case,saori/ssu.dll,compare_head_case
compare_tail_case,saori/ssu.dll,compare_tail_case
-上記の宣言をしない方法
[[SAORIの登録(satori_conf.txt)>ファイル構成#q327057d]]や[...
それは、各々のSAORI呼び出しエイリアス名を、全て第一引数に...
よって@SAORIには上の登録をしなくても
ssu,saori/ssu.dll
とだけ登録しておいて、
*
(ssu,calc,1+1)
と、第一引数に「使いたいときだけ」関数コマンドを入れる形...
ただし、辞書の記述量がちょっぴり増えるのと、何より内部関...
*計算 [#e83aa253]
**calc [#q39c9268]
calcは小数点以下を無視(切り捨て?)して計算する。~
ifやswitchなどの引数は、暗黙のうちにこれを実行している。
(calc,計算式)
**calc_float [#j902f630]
calc_floatは小数点以下も計算する。
(calc_float,計算式)
ただしこのままだと整数で計算した結果を渡してしまうため、...
*
$SAORI引数の計算【タブ】無効
:計算するよー。5÷2は(calc_float,5÷2)っ!
$SAORI引数の計算【タブ】自動
↓
計算するよー。5÷2は2.5っ!
*条件分岐 [#bab1f0f9]
**if [#wb2dd863]
[[条件式>少し詳しい調理方法#dbd3478d]]を評価し、真(0 と ...
そうでないならば、偽の結果を返す(偽の結果が書かれている...
(if,条件式,真の結果[,偽の結果])
例
*
$たこ数【タブ】(乱数0~3)
:たこが(たこ数)匹釣れました。今日は(if,(たこ数)>...
:(if,(たこ数)==0,普通ってお前、釣れてないだろそれ...
&color(red){※if関数内で [[set>内部関数#v0928166]]関数を次...
#例文
(if,(乱数0~1),(set,hoge,0),(set,moge,1))
#解決策1
((if、(乱数0~1)、set,hoge,0、set,moge,1))
#解決策2
(when,(乱数0~1),(set,hoge,0),(set,moge,1))
解決策1はif関数の結果はただの文字列、if関数が展開された...
解決策2は里々Mc145-1以降に追加された[[when>内部関数#c8fb...
**unless [#o873c47b]
条件式を評価し、偽(0 か 0)ならば偽の結果を返す。
そうでないならば、真の結果を返す(真の結果が書かれている...
(unless,条件,偽の結果[,真の結果])
**iflist [#xc487586]
ifと違う点は、条件式が左右に分かれたことと、複数の条件を...
(iflist,左辺,右辺1,結果1[,右辺2,結果2[…,右辺n,結果...
(iflist,左辺,右辺1,結果1[,右辺2,結果2[…,右辺n,結果...
+左辺と右辺1を組み合わせた条件式を評価し、真ならば結果1...
+そうでなければ左辺と右辺2と組み合わせ、真ならば結果2を...
+そうでなければ左辺と右辺3を…以下略。~
左辺と右辺の文字列を単純に結合した結果を数式として取り扱...
通常は''左辺の右端か右辺の左端のいずれかに演算子(==と...
偽の結果は120以降に追加されたもので、いずれの条件も満たさ...
偽の結果が指定されていない場合は、空を返します。~
#例
(iflist,(現在時)==,6,朝飯,12,昼飯,15,おやつ,1...
例では演算子を左辺に使っていますが、右辺に使っても動作し...
**switch [#d943d366]
条件並列分岐。
まず、左辺と右辺1が等しいか比較し、等しければ結果1を返...
そうでなければ次の右辺2と比較し、等しければ結果2を返し...
そうでなければ…(以下略)。
いずれの右辺とも等しくなければ、空を返します。
(switch,左辺,右辺1,結果1[,右辺2,結果2[…,右辺n,結果...
120以降、それ以外の場合を書けるようになりました。どの右辺...
(switch,左辺,右辺1,結果1[,右辺2,結果2[…,右辺n,結果...
内部では、
(左辺)==(右辺1)
(左辺)==(右辺2)
(左辺)==(右辺3)
…
というふうに数式を使い真偽を判定しているので、左辺・右辺...
また、上記仕組みのため、iflist/whenlistと比べて、処理速度...
''サンプル:''
*
:今月は(switch、
(現在月)、
1、お正月ですね、
2、バレンタインデーがあります、
3、ひなまつりがあります、
5、こどもの日があります、
8、夏休みですね、
12、クリスマスがあります、
特に何もありません)。
**nswitch [#m797af99]
数値による分岐。switchをシンプルにしたような。
数値が1なら結果1を返す。
数値が2なら結果2を返す。
数値が…(以下略)。
数値の部分に文字列が入っていたり、数値が0以下だったり、...
(nswitch,数値,結果1[,結果2[…,結果n]])
*
:サイコロを振りました。
(nswitch、(乱数1~6)、一、ニ、三、四、五、六)がで...
*切り出し [#h10dac4a]
**substr [#s333c39a]
文字列の一部(開始位置から取り出す長さの分)を取り出す。
(substr,文字列,開始位置[,取り出す長さ])
120以降、開始位置、長さ共にマイナス値を指定できるようにな...
開始位置の場合
0 1 2 3 4 5
あいうえおかきくけこ
-5-4-3-2-1
長さの場合(開始位置が「か」の場合)
1 2 3 4 5
あいうえおかきくけこ
-5-4-3-2-1
(substr,あいうえおかきくけこ,5,3)
(substr,あいうえおかきくけこ,5,-3)
↓
かきく
うえお
*分割 [#h3010484]
**split [#k30d1e1d]
(split,分割する文字列[,区切文字列[,最大分割数[,空要素分...
例
(split,あ、、い、う)
(split,あ、、い、う,、)
(split,あ、、い、う,、,0)
(split,あ、、い、う,、,0,1)
文字列を分割します、関数の返り値は文字列の分割数を返しま...
-区切文字列以降を省略した場合は1文字づつに分割します。
-最大分割数に1以上を指定すると分割数が最大分割数以上にな...
-空要素分割に1を指定すると文字列内に区切文字列が連続して...
例~
(split,あ、、い、う,、,0,1) 結果(S0)=あ(S1)=[...
(split,あ、、い、う,、,0,0) 結果(S0)=あ(S1)=...
関数の返り値の分割数をそのままトークに利用するのでなけれ...
$分割数【タブ】(split,文字列[,分割文字列[,最大分割数][...
(nop,(split,文字列[,分割文字列[,最大分割数[,空要素分割...
単語群のひとつの単語から2語以上拾ったり、日時取得時に時...
~
-分割文字列は、全て一文字ごとに判定される事に注意して下さ...
(split,焼きイカ風味カルビ味ソイソース,イカ)
-としたとき''『焼き』『風味カルビ味ソイソース』''に分割さ...
--つまり
---×『焼き&color(red){イカ};風味カルビ味ソイソース』
---○『焼き&color(red){イ};&color(blue){カ};風味&color(blu...
--ということ。
-二文字以上からなる文字列で分割したい場合は、予めreplace...
よくイベントの引数(R0など)で使用されているバイト値1区...
(split,(R0),(sprintf,%c,1))
※里々/整備班カスタムMc134-901以降より(バイト値、1)で使...
分割文字列にカンマ","が良く使われますのでこれで文字列を分...
(split、(R0)、,)
また文字列に","や"、"が両方とも含まれる可能性がある場合は...
$B3【タブ】(バイト値、3)
$引数区切り追加【タブ】(B3)
(split(B3)(R0)(B3)(バイト値、1))
$引数区切り削除【タブ】(B3)
[[特殊変数]]の引数区切り参考
*置換 [#j1c9a8e1]
**replace [#s7b2281c]
文字列の中の特定の文字を別な文字に置き換える。
(replace,文字列,検索語,置換する語)
(replace,なまむぎなまごめなまたまご,なま,生)
↓
生むぎ生ごめ生たまご
**replace_first [#r1ea2ff7]
replaceの一番最初の該当文字だけ置き換える版。
(replace_first,文字列,検索語,置換する語)
(replace_first,なまむぎなまごめなまたまご,なま,生)
↓
生むぎなまごめなまたまご
*消去 [#p378228e]
**erase [#u24c310e]
文字列の中の特定の文字を消す。
(erase,文字列,消去する語)
(erase,なまむぎなまごめなまたまご,なま)
↓
むぎごめたまご
**erase_first [#i0db8901]
eraseの一番最初の該当文字だけ消す版。
(erase_first,文字列,消去する語)
(erase_first,なまむぎなまごめなまたまご,なま)
↓
むぎなまごめなまたまご
*検索 [#xa6f939f]
**count [#f2d7afd3]
文字列の中に、特定の検索語がいくつ含まれているかを数える。~
条件式に使うなら、単純に文字列検索として使える。
(count,文字列,検索語)
「なまむぎなまごめなまたまご」の中に
「なま」は(count,なまむぎなまごめなまたまご,なま)個入...
↓
「なまむぎなまごめなまたまご」の中に
「なま」は3個入っています。
*比較 [#j77734db]
**compare [#r499e278]
文字列1と文字列2が等しければ1(真)、そうでないなら0(...
(compare,文字列1,文字列2)
-里々Mc143-10/Rev2より~
この関数による比較は、大文字・小文字、半角・全角を同一と...
(compare,ABC,ABC)
(compare,ABC,ABC)
(compare,ABC,abc)
(compare,ABCダ,AbCダ)
上記の実行結果はいずれも1となります。~
~
初期の里々において文字列の[[比較演算>演算子一覧]]が出来な...
-文字列の[[比較演算>演算子一覧]]では、比較する文字列の中...
(if,"A=="=="A==",1,0)
その様な場合は compare関数を使う事に成りますが、compare関...
-変数比較の問題は整備班カスタム版里々で解消されました。~
関連→[[compare_case>外部関数/ssu#b058c94a]]関数
**compare_head [#w6ba3833]
文字列1の先頭に文字列2が含まれていれば1(真)、そうでな...
(compare_head,文字列1,文字列2)
里々Mc143-10/Rev2より、この関数による比較は半角・全角を同...
里々Mc150-1より、大文字・小文字を同一と見なします。~
関連→[[compare_head_case>外部関数/ssu#g9b68663]]関数
**compare_tail [#nd74b414]
文字列1の末尾に文字列2が含まれていれば1(真)、そうでな...
(compare_tail,文字列1,文字列2)
里々Mc143-10/Rev2より、この関数による比較は半角・全角を同...
里々Mc150-1より、大文字・小文字を同一と見なします。 ~
関連→[[compare_tail_case>外部関数/ssu#eb0ec027]]関数
**compare_case [#b058c94a]
半角全角を同一視し、大文字小文字を同一視しない[[compare>...
(compare_case,文字列1,文字列2)
里々Mc150-1より追加、使用には[[satori_conf.txt>ファイル構...
**compare_head_case [#g9b68663]
半角全角を同一視し、大文字小文字を同一視しない[[compare_h...
(compare_head_case,文字列1,文字列2)
里々Mc150-1より追加、使用には[[satori_conf.txt>ファイル構...
**compare_tail_case [#eb0ec027]
半角全角を同一視し、大文字小文字を同一視しない[[compare_t...
(compare_tail_case,文字列1,文字列2)
里々Mc150-1より追加、使用には[[satori_conf.txt>ファイル構...
*文字数取得 [#a172df68]
**length [#t187dacf]
文字列の文字数(バイト数じゃないよ)を返す。
(length,文字列)
*フォーマット出力 [#mc514abe]
**sprintf [#v4e10095]
引数1~nをフォーマットに従って変換したものを返す。
(sprintf,フォーマット[,引数1[,引数2[…,引数n]]])
フォーマットは、
(sprintf,%02d月%02d日,12,3)
のように、「%」から始まる「フォーマット指定子」を含む文字...
フォーマット指定子の出現順と対応する順序の引数が、フォー...
整備班verでは実数(小数点以下)も扱えるように。~
~
***フォーマット指定子 [#g5e1d44c]
''基本の書きかた''~
%[フラグ指定][最小幅指定][.精度指定][出力指定]
出力指定以外は省略可能
''フラグ指定''~
|指定|説明|h
|+|常に正負符号を表示する|
|-|最小幅に足りない分だけ末尾を半角スペースで埋める(左詰...
| ((半角スペース。))|最小幅に足りない分だけ先頭を半...
|0|最小幅に足りない分だけ先頭を0で埋める|
|#|代替形式。後述|
複数続けて指定できる(競合する場合は後に書いた方優先)~
「0」「 」の「先頭」は、正負符号がある場合はその後ろ~
全角文字は2幅分と数える~
#出力結果:ユーザ 様
(sprintf,%-10s様,ユーザ)
#出力結果:1234年05月06日
(sprintf,%04d年%02d月%02d日,1234,5,6)
#出力結果:-1+3は?
(sprintf,%+d%+dは?,-1,+3)
#出力結果:- 12
(sprintf,% 5d,-12)
''最小幅指定''~
文字列の最小幅(最小文字数)を指定できる~
数字を入れる場合、正負符号や小数点「.」も数えることに注意~
フラグ指定と合わせて用いる~
#出力結果: -12
#フラグ「 」を指定した場合と異なり空白は符合よりも前
(sprintf,%6d,-12)
#出力結果:-012
(sprintf,%04d,-12)
''精度指定''~
「.」に続けて実数の有効桁数が指定できる~
#出力結果:3.142
(sprintf,%1.3f,3.141529)
''出力指定''
|指定|対応する引数|説明|引数「63」の出力例|h
|s,S|全て|文字列をそのまま表示(sもSも同じ)|63|
|c,C|整数|指定した10進整数に対応する文字を表示(cもCも同...
|d,u|実数|10進整数で表示(dは符号なし、uは符号付き)|63|
|o,i|実数|8進整数で表示(oもiも同じ)|77|
|x,X|実数|16進符号なし整数で表示(xは小文字表記、Xは大文...
|f|実数|実数を少数形式(固定小数点による標準記法)で表示|...
|e,E|実数|実数を指数形式(科学的記法)で表示(eは小文字表...
|g,G|実数|f,eのうち適した方の形式で表示(gは小文字表記、G...
''フラグ「#」の代替形式について''~
変換指定に応じて意味が変わる~
''o,x,Xの場合'':基数を明確にする~
''f,e,E,g,Gの場合'':常に小数点を表示~
''他'':無視される~
#出力結果:0XA
(sprintf,%#X,10)
''補足''~
引数の番号指定はできない~
*引数判定 [#z5382a99]
**is_empty [#x9343bf4]
is_emptyは引数が空文字列であるかを判定。空文字列なら1(真...
(is_empty,引数)
**is_digit [#lc758f87]
is_digitは引数が数値であるかを判定。数値なら1(真)、そう...
(is_digit,引数)
下記のどちらかの記述で、引数が整数の場合のみ1(真)を返す...
(is_digit,引数,整数)(is_digit,引数,integer)
**is_alpha [#keab27c1]
is_alphaは引数がアルファベットの文字列であるかを判定。ア...
(is_alpha,引数)
*文字列変換 [#b8ab222b]
**zen2han [#kcdb8c93]
文字列中の全角である「数字、アルファベット、カナ、一部の...
Mc137-1以降で変換タイプの指定が可能。
数字・アルファベット・カナ・記号 が指定可能で、複数指定...
指定は空白等適当な文字で区切って行い、指定したタイプのも...
(zen2han,文字列[,変換タイプ])
**han2zen [#i42ef3a3]
文字列中の半角である「数字、アルファベット、カナ、一部の...
Mc137-1以降で変換タイプの指定が可能。
数字・アルファベット・カナ・記号 が指定可能で、複数指定...
指定は空白等適当な文字で区切って行い、指定したタイプのも...
(han2zen,文字列[,変換タイプ])
**kata2hira [#j9eab0ba]
文字列中のカタカナをひらがなに変換。
(kata2hira,文字列)
**hira2kata [#vfc093d8]
文字列中のひらがなをカタカナに変換。
(hira2kata,文字列)
*接続 [#hbca4274]
**join [#u4b67fc5]
120から追加。対象1~nを連結文字列で繋いだものを返す。
(join,連結文字列,対象1[,対象2[…,対象n]])
(join,と,グー,チョキ,パー)
↓
グーとチョキとパー
(calc,(join,+,1,2,3,4,5))
↓
(calc,1+2+3+4+5)
↓
15
*選択 [#l0b6b2f0]
**choice [#c5948413]
124から追加。引数1~nの中からランダムに1つを選んで返す...
(choice,引数1[,引数2[…,引数n]])
*
:何が釣れた?
:(choice,鯛,イワシ,鮫,くじら,長靴)が釣れたよ。
*新規追加分 [#b53e3c36]
Mc129くらいから追加?
暫定的なものかもしれないので仕様変更の可能性アリ
**reverse [#je4d559e]
「文字列」を「列字文」にする。
(reverse,文字列)
*
:「(reverse,ねないこだれだ)!」
:「だれだこいなね」って、ねぇ…。
**at [#p2da099c]
0から始まる指定文字数目の文字を抜き出す
(at,文字列,引数1)
(at,お酒に逃げた,3)→逃
**lsimg [#pf3b1ded]
指定フォルダ内の画像ファイルの数を調べる
(lsimg,絶対パス)
*
:(lsimg,D:\アレな画像)個もの画像ファイルが見つかった...
**mkdir [#i0475bee]
フォルダを作る
成功したら1、失敗したら0を返す
(mkdir,絶対パスorベースウェアからの相対パス)
*フォルダ作成
>成功【タブ】(mkdir,ghost\satori\ghost\master\新規フォ...
:失敗したみたい…。
*成功
:新規フォルダをつくったよ。
終了行:
#br
#br
----
''Mc157-1よりssu関数が里々内部に統合された事に伴い、最新...
本記事の内容は以前までの古いものになります。
----
#br
#br
#br
*注意点 [#o9646af5]
%%引数にまだ何も入ってない変数を入れるとエラーが出るので...
この問題は整備班カスタム版里々で解消されました。
ssuは[[SAORI]]なので、予め[[satori_conf.txt>ファイル構成#...
テンプレートゴーストを改造して使う場合、恐らく大半が既に...
ですので、ポストと狛犬の辞書を改変してゴーストを作ってい...
choice,saori/ssu.dll,choice
join,saori/ssu.dll,join
また、Mc129以降なら更に下記の追加をお勧めします。
reverse,saori/ssu.dll,reverse
at,saori/ssu.dll,at
lsimg,saori/ssu.dll,lsimg
mkdir,saori/ssu.dll,mkdir
Mc150-1以降で追加
compare_case,saori/ssu.dll,compare_case
compare_head_case,saori/ssu.dll,compare_head_case
compare_tail_case,saori/ssu.dll,compare_tail_case
-上記の宣言をしない方法
[[SAORIの登録(satori_conf.txt)>ファイル構成#q327057d]]や[...
それは、各々のSAORI呼び出しエイリアス名を、全て第一引数に...
よって@SAORIには上の登録をしなくても
ssu,saori/ssu.dll
とだけ登録しておいて、
*
(ssu,calc,1+1)
と、第一引数に「使いたいときだけ」関数コマンドを入れる形...
ただし、辞書の記述量がちょっぴり増えるのと、何より内部関...
*計算 [#e83aa253]
**calc [#q39c9268]
calcは小数点以下を無視(切り捨て?)して計算する。~
ifやswitchなどの引数は、暗黙のうちにこれを実行している。
(calc,計算式)
**calc_float [#j902f630]
calc_floatは小数点以下も計算する。
(calc_float,計算式)
ただしこのままだと整数で計算した結果を渡してしまうため、...
*
$SAORI引数の計算【タブ】無効
:計算するよー。5÷2は(calc_float,5÷2)っ!
$SAORI引数の計算【タブ】自動
↓
計算するよー。5÷2は2.5っ!
*条件分岐 [#bab1f0f9]
**if [#wb2dd863]
[[条件式>少し詳しい調理方法#dbd3478d]]を評価し、真(0 と ...
そうでないならば、偽の結果を返す(偽の結果が書かれている...
(if,条件式,真の結果[,偽の結果])
例
*
$たこ数【タブ】(乱数0~3)
:たこが(たこ数)匹釣れました。今日は(if,(たこ数)>...
:(if,(たこ数)==0,普通ってお前、釣れてないだろそれ...
&color(red){※if関数内で [[set>内部関数#v0928166]]関数を次...
#例文
(if,(乱数0~1),(set,hoge,0),(set,moge,1))
#解決策1
((if、(乱数0~1)、set,hoge,0、set,moge,1))
#解決策2
(when,(乱数0~1),(set,hoge,0),(set,moge,1))
解決策1はif関数の結果はただの文字列、if関数が展開された...
解決策2は里々Mc145-1以降に追加された[[when>内部関数#c8fb...
**unless [#o873c47b]
条件式を評価し、偽(0 か 0)ならば偽の結果を返す。
そうでないならば、真の結果を返す(真の結果が書かれている...
(unless,条件,偽の結果[,真の結果])
**iflist [#xc487586]
ifと違う点は、条件式が左右に分かれたことと、複数の条件を...
(iflist,左辺,右辺1,結果1[,右辺2,結果2[…,右辺n,結果...
(iflist,左辺,右辺1,結果1[,右辺2,結果2[…,右辺n,結果...
+左辺と右辺1を組み合わせた条件式を評価し、真ならば結果1...
+そうでなければ左辺と右辺2と組み合わせ、真ならば結果2を...
+そうでなければ左辺と右辺3を…以下略。~
左辺と右辺の文字列を単純に結合した結果を数式として取り扱...
通常は''左辺の右端か右辺の左端のいずれかに演算子(==と...
偽の結果は120以降に追加されたもので、いずれの条件も満たさ...
偽の結果が指定されていない場合は、空を返します。~
#例
(iflist,(現在時)==,6,朝飯,12,昼飯,15,おやつ,1...
例では演算子を左辺に使っていますが、右辺に使っても動作し...
**switch [#d943d366]
条件並列分岐。
まず、左辺と右辺1が等しいか比較し、等しければ結果1を返...
そうでなければ次の右辺2と比較し、等しければ結果2を返し...
そうでなければ…(以下略)。
いずれの右辺とも等しくなければ、空を返します。
(switch,左辺,右辺1,結果1[,右辺2,結果2[…,右辺n,結果...
120以降、それ以外の場合を書けるようになりました。どの右辺...
(switch,左辺,右辺1,結果1[,右辺2,結果2[…,右辺n,結果...
内部では、
(左辺)==(右辺1)
(左辺)==(右辺2)
(左辺)==(右辺3)
…
というふうに数式を使い真偽を判定しているので、左辺・右辺...
また、上記仕組みのため、iflist/whenlistと比べて、処理速度...
''サンプル:''
*
:今月は(switch、
(現在月)、
1、お正月ですね、
2、バレンタインデーがあります、
3、ひなまつりがあります、
5、こどもの日があります、
8、夏休みですね、
12、クリスマスがあります、
特に何もありません)。
**nswitch [#m797af99]
数値による分岐。switchをシンプルにしたような。
数値が1なら結果1を返す。
数値が2なら結果2を返す。
数値が…(以下略)。
数値の部分に文字列が入っていたり、数値が0以下だったり、...
(nswitch,数値,結果1[,結果2[…,結果n]])
*
:サイコロを振りました。
(nswitch、(乱数1~6)、一、ニ、三、四、五、六)がで...
*切り出し [#h10dac4a]
**substr [#s333c39a]
文字列の一部(開始位置から取り出す長さの分)を取り出す。
(substr,文字列,開始位置[,取り出す長さ])
120以降、開始位置、長さ共にマイナス値を指定できるようにな...
開始位置の場合
0 1 2 3 4 5
あいうえおかきくけこ
-5-4-3-2-1
長さの場合(開始位置が「か」の場合)
1 2 3 4 5
あいうえおかきくけこ
-5-4-3-2-1
(substr,あいうえおかきくけこ,5,3)
(substr,あいうえおかきくけこ,5,-3)
↓
かきく
うえお
*分割 [#h3010484]
**split [#k30d1e1d]
(split,分割する文字列[,区切文字列[,最大分割数[,空要素分...
例
(split,あ、、い、う)
(split,あ、、い、う,、)
(split,あ、、い、う,、,0)
(split,あ、、い、う,、,0,1)
文字列を分割します、関数の返り値は文字列の分割数を返しま...
-区切文字列以降を省略した場合は1文字づつに分割します。
-最大分割数に1以上を指定すると分割数が最大分割数以上にな...
-空要素分割に1を指定すると文字列内に区切文字列が連続して...
例~
(split,あ、、い、う,、,0,1) 結果(S0)=あ(S1)=[...
(split,あ、、い、う,、,0,0) 結果(S0)=あ(S1)=...
関数の返り値の分割数をそのままトークに利用するのでなけれ...
$分割数【タブ】(split,文字列[,分割文字列[,最大分割数][...
(nop,(split,文字列[,分割文字列[,最大分割数[,空要素分割...
単語群のひとつの単語から2語以上拾ったり、日時取得時に時...
~
-分割文字列は、全て一文字ごとに判定される事に注意して下さ...
(split,焼きイカ風味カルビ味ソイソース,イカ)
-としたとき''『焼き』『風味カルビ味ソイソース』''に分割さ...
--つまり
---×『焼き&color(red){イカ};風味カルビ味ソイソース』
---○『焼き&color(red){イ};&color(blue){カ};風味&color(blu...
--ということ。
-二文字以上からなる文字列で分割したい場合は、予めreplace...
よくイベントの引数(R0など)で使用されているバイト値1区...
(split,(R0),(sprintf,%c,1))
※里々/整備班カスタムMc134-901以降より(バイト値、1)で使...
分割文字列にカンマ","が良く使われますのでこれで文字列を分...
(split、(R0)、,)
また文字列に","や"、"が両方とも含まれる可能性がある場合は...
$B3【タブ】(バイト値、3)
$引数区切り追加【タブ】(B3)
(split(B3)(R0)(B3)(バイト値、1))
$引数区切り削除【タブ】(B3)
[[特殊変数]]の引数区切り参考
*置換 [#j1c9a8e1]
**replace [#s7b2281c]
文字列の中の特定の文字を別な文字に置き換える。
(replace,文字列,検索語,置換する語)
(replace,なまむぎなまごめなまたまご,なま,生)
↓
生むぎ生ごめ生たまご
**replace_first [#r1ea2ff7]
replaceの一番最初の該当文字だけ置き換える版。
(replace_first,文字列,検索語,置換する語)
(replace_first,なまむぎなまごめなまたまご,なま,生)
↓
生むぎなまごめなまたまご
*消去 [#p378228e]
**erase [#u24c310e]
文字列の中の特定の文字を消す。
(erase,文字列,消去する語)
(erase,なまむぎなまごめなまたまご,なま)
↓
むぎごめたまご
**erase_first [#i0db8901]
eraseの一番最初の該当文字だけ消す版。
(erase_first,文字列,消去する語)
(erase_first,なまむぎなまごめなまたまご,なま)
↓
むぎなまごめなまたまご
*検索 [#xa6f939f]
**count [#f2d7afd3]
文字列の中に、特定の検索語がいくつ含まれているかを数える。~
条件式に使うなら、単純に文字列検索として使える。
(count,文字列,検索語)
「なまむぎなまごめなまたまご」の中に
「なま」は(count,なまむぎなまごめなまたまご,なま)個入...
↓
「なまむぎなまごめなまたまご」の中に
「なま」は3個入っています。
*比較 [#j77734db]
**compare [#r499e278]
文字列1と文字列2が等しければ1(真)、そうでないなら0(...
(compare,文字列1,文字列2)
-里々Mc143-10/Rev2より~
この関数による比較は、大文字・小文字、半角・全角を同一と...
(compare,ABC,ABC)
(compare,ABC,ABC)
(compare,ABC,abc)
(compare,ABCダ,AbCダ)
上記の実行結果はいずれも1となります。~
~
初期の里々において文字列の[[比較演算>演算子一覧]]が出来な...
-文字列の[[比較演算>演算子一覧]]では、比較する文字列の中...
(if,"A=="=="A==",1,0)
その様な場合は compare関数を使う事に成りますが、compare関...
-変数比較の問題は整備班カスタム版里々で解消されました。~
関連→[[compare_case>外部関数/ssu#b058c94a]]関数
**compare_head [#w6ba3833]
文字列1の先頭に文字列2が含まれていれば1(真)、そうでな...
(compare_head,文字列1,文字列2)
里々Mc143-10/Rev2より、この関数による比較は半角・全角を同...
里々Mc150-1より、大文字・小文字を同一と見なします。~
関連→[[compare_head_case>外部関数/ssu#g9b68663]]関数
**compare_tail [#nd74b414]
文字列1の末尾に文字列2が含まれていれば1(真)、そうでな...
(compare_tail,文字列1,文字列2)
里々Mc143-10/Rev2より、この関数による比較は半角・全角を同...
里々Mc150-1より、大文字・小文字を同一と見なします。 ~
関連→[[compare_tail_case>外部関数/ssu#eb0ec027]]関数
**compare_case [#b058c94a]
半角全角を同一視し、大文字小文字を同一視しない[[compare>...
(compare_case,文字列1,文字列2)
里々Mc150-1より追加、使用には[[satori_conf.txt>ファイル構...
**compare_head_case [#g9b68663]
半角全角を同一視し、大文字小文字を同一視しない[[compare_h...
(compare_head_case,文字列1,文字列2)
里々Mc150-1より追加、使用には[[satori_conf.txt>ファイル構...
**compare_tail_case [#eb0ec027]
半角全角を同一視し、大文字小文字を同一視しない[[compare_t...
(compare_tail_case,文字列1,文字列2)
里々Mc150-1より追加、使用には[[satori_conf.txt>ファイル構...
*文字数取得 [#a172df68]
**length [#t187dacf]
文字列の文字数(バイト数じゃないよ)を返す。
(length,文字列)
*フォーマット出力 [#mc514abe]
**sprintf [#v4e10095]
引数1~nをフォーマットに従って変換したものを返す。
(sprintf,フォーマット[,引数1[,引数2[…,引数n]]])
フォーマットは、
(sprintf,%02d月%02d日,12,3)
のように、「%」から始まる「フォーマット指定子」を含む文字...
フォーマット指定子の出現順と対応する順序の引数が、フォー...
整備班verでは実数(小数点以下)も扱えるように。~
~
***フォーマット指定子 [#g5e1d44c]
''基本の書きかた''~
%[フラグ指定][最小幅指定][.精度指定][出力指定]
出力指定以外は省略可能
''フラグ指定''~
|指定|説明|h
|+|常に正負符号を表示する|
|-|最小幅に足りない分だけ末尾を半角スペースで埋める(左詰...
| ((半角スペース。))|最小幅に足りない分だけ先頭を半...
|0|最小幅に足りない分だけ先頭を0で埋める|
|#|代替形式。後述|
複数続けて指定できる(競合する場合は後に書いた方優先)~
「0」「 」の「先頭」は、正負符号がある場合はその後ろ~
全角文字は2幅分と数える~
#出力結果:ユーザ 様
(sprintf,%-10s様,ユーザ)
#出力結果:1234年05月06日
(sprintf,%04d年%02d月%02d日,1234,5,6)
#出力結果:-1+3は?
(sprintf,%+d%+dは?,-1,+3)
#出力結果:- 12
(sprintf,% 5d,-12)
''最小幅指定''~
文字列の最小幅(最小文字数)を指定できる~
数字を入れる場合、正負符号や小数点「.」も数えることに注意~
フラグ指定と合わせて用いる~
#出力結果: -12
#フラグ「 」を指定した場合と異なり空白は符合よりも前
(sprintf,%6d,-12)
#出力結果:-012
(sprintf,%04d,-12)
''精度指定''~
「.」に続けて実数の有効桁数が指定できる~
#出力結果:3.142
(sprintf,%1.3f,3.141529)
''出力指定''
|指定|対応する引数|説明|引数「63」の出力例|h
|s,S|全て|文字列をそのまま表示(sもSも同じ)|63|
|c,C|整数|指定した10進整数に対応する文字を表示(cもCも同...
|d,u|実数|10進整数で表示(dは符号なし、uは符号付き)|63|
|o,i|実数|8進整数で表示(oもiも同じ)|77|
|x,X|実数|16進符号なし整数で表示(xは小文字表記、Xは大文...
|f|実数|実数を少数形式(固定小数点による標準記法)で表示|...
|e,E|実数|実数を指数形式(科学的記法)で表示(eは小文字表...
|g,G|実数|f,eのうち適した方の形式で表示(gは小文字表記、G...
''フラグ「#」の代替形式について''~
変換指定に応じて意味が変わる~
''o,x,Xの場合'':基数を明確にする~
''f,e,E,g,Gの場合'':常に小数点を表示~
''他'':無視される~
#出力結果:0XA
(sprintf,%#X,10)
''補足''~
引数の番号指定はできない~
*引数判定 [#z5382a99]
**is_empty [#x9343bf4]
is_emptyは引数が空文字列であるかを判定。空文字列なら1(真...
(is_empty,引数)
**is_digit [#lc758f87]
is_digitは引数が数値であるかを判定。数値なら1(真)、そう...
(is_digit,引数)
下記のどちらかの記述で、引数が整数の場合のみ1(真)を返す...
(is_digit,引数,整数)(is_digit,引数,integer)
**is_alpha [#keab27c1]
is_alphaは引数がアルファベットの文字列であるかを判定。ア...
(is_alpha,引数)
*文字列変換 [#b8ab222b]
**zen2han [#kcdb8c93]
文字列中の全角である「数字、アルファベット、カナ、一部の...
Mc137-1以降で変換タイプの指定が可能。
数字・アルファベット・カナ・記号 が指定可能で、複数指定...
指定は空白等適当な文字で区切って行い、指定したタイプのも...
(zen2han,文字列[,変換タイプ])
**han2zen [#i42ef3a3]
文字列中の半角である「数字、アルファベット、カナ、一部の...
Mc137-1以降で変換タイプの指定が可能。
数字・アルファベット・カナ・記号 が指定可能で、複数指定...
指定は空白等適当な文字で区切って行い、指定したタイプのも...
(han2zen,文字列[,変換タイプ])
**kata2hira [#j9eab0ba]
文字列中のカタカナをひらがなに変換。
(kata2hira,文字列)
**hira2kata [#vfc093d8]
文字列中のひらがなをカタカナに変換。
(hira2kata,文字列)
*接続 [#hbca4274]
**join [#u4b67fc5]
120から追加。対象1~nを連結文字列で繋いだものを返す。
(join,連結文字列,対象1[,対象2[…,対象n]])
(join,と,グー,チョキ,パー)
↓
グーとチョキとパー
(calc,(join,+,1,2,3,4,5))
↓
(calc,1+2+3+4+5)
↓
15
*選択 [#l0b6b2f0]
**choice [#c5948413]
124から追加。引数1~nの中からランダムに1つを選んで返す...
(choice,引数1[,引数2[…,引数n]])
*
:何が釣れた?
:(choice,鯛,イワシ,鮫,くじら,長靴)が釣れたよ。
*新規追加分 [#b53e3c36]
Mc129くらいから追加?
暫定的なものかもしれないので仕様変更の可能性アリ
**reverse [#je4d559e]
「文字列」を「列字文」にする。
(reverse,文字列)
*
:「(reverse,ねないこだれだ)!」
:「だれだこいなね」って、ねぇ…。
**at [#p2da099c]
0から始まる指定文字数目の文字を抜き出す
(at,文字列,引数1)
(at,お酒に逃げた,3)→逃
**lsimg [#pf3b1ded]
指定フォルダ内の画像ファイルの数を調べる
(lsimg,絶対パス)
*
:(lsimg,D:\アレな画像)個もの画像ファイルが見つかった...
**mkdir [#i0475bee]
フォルダを作る
成功したら1、失敗したら0を返す
(mkdir,絶対パスorベースウェアからの相対パス)
*フォルダ作成
>成功【タブ】(mkdir,ghost\satori\ghost\master\新規フォ...
:失敗したみたい…。
*成功
:新規フォルダをつくったよ。
ページ名: