|
1.文字列の結合
例えば変数AにABC,変数BにDEFが入っていたとします。これをくっ付けてCという変数を作りたいと思います。
文字列変数同士をつなげるにはJOIN関数を使います。関数と聞くと難しく感じますが、簡単なので安心してください。
-mozi1.bas-
#!/usr/bin/scriba
A="ABC"
B="DEF"
C=JOIN("",A,B)
print "Content-Type: text/html; charset=euc-jp\n\n"
print "<html><body>"
print C
print "</body></html>" |
▼実行結果
見事に結合できました。通常はprint A,Bとわざわざ変数Cを作る必要ありません。
ですが、変数Cがどうしても必要な場合にこのJOIN関数は役立ちます。
さて、JOIN関数の説明です。
JOIN(引数1,引数2,引数3)という形で書きます。
引数1には結合文字を書きます。特に指定したくない場合は""とだけ書きます。
引数2以降には結合したい変数名を書きます。いくつでも書けます。
結合文字とは変数と変数の間に入る文字です。例えば、:で区切りたいときは ":" と書くことで区切れます。
各変数の間を改行したい場合は"<br>"とすれば結合できます。
もう一度、プログラムしてみましょう。今度は変数Cと文字JKLを増やしました。
また結合文字に@を指定しました。
-mozi2.bas-
#!/usr/bin/scriba
A="ABC"
B="DEF"
C="GHI"
D=JOIN("@",A,B,C,"JKL")
print "Content-Type: text/html; charset=euc-jp\n\n"
print "<html><body>"
print D
print "</body></html>" |
▼実行結果
文字と文字の間に@が入って表示されました。
このようにJOIN関数は変数でも通常の文字列でも結合できます。
2.文字数を取得
文字数を計算するにはLEN()関数を利用します
-mozi3.bas-
#!/usr/bin/scriba
print "Content-Type: text/html; charset=euc-jp\n\n"
print "<html><body>"
print LEN("ABCDE")
print "</body></html>" |
▼実行結果
LEN()関数は文字数を返します。今回はABCDEとなっているので4が戻ってきました。
この関数は半角で計算・表示します。日本語など全角文字を入力した場合は2倍になるのでご注意下さい。
-mozi4.bas-
#!/usr/bin/scriba
mozi="日本語です"
print "Content-Type: text/html; charset=euc-jp\n\n"
print "<html><body>"
print LEN(mozi)
print "</body></html>" |
▼実行結果
変数moziに日本語ですと5文字の文字列を代入しました。
print LEN(mozi)で文字数を計算します。変数内の文字は日本語ですの5文字の筈ですが、
前述したとおり、日本語は1文字あたり半角2文字と計算します。というわけでちょうど、倍の10が表示されました。
(アルファベット混じりの文字列を指定すると、アルファベットなどは1文字,日本語は2文字と計算するので注意してください)
3.部分取り出し
文字列から一部分を取り出す場合は、MID()関数を利用します。
MID(文字列,開始位置 [,長さ])
長さの指定は任意です。
-mozi5.bas-
#!/usr/bin/scriba
mozi="abcdefg"
print "Content-Type: text/html; charset=euc-jp\n\n"
print "<html><body>"
print MID(mozi,2,3),"<br>"
print MID(mozi,4,1),"<br>"
print MID(mozi,1,4),"<br>"
print "</body></html>" |
▼実行結果
1つめのMID(mozi,2,3)では変数moziの2文字目から3文字目を取り出しています。
次は4文字目から1文字、つまり4文字目のdを取り出しています。
最後は1文字目から4文字目までを取り出しています。
サンプルプログラムでは変数を指定しましたが、直接"abcdefg"と指定しても結果は同じです。
4.置き換えしよう
文字列を置き換えすることを置換(チカン)といいます。痴漢じゃないですよ。
場合は、REPLACE()関数を利用します。
REPLACE(対象文字列,検索文字,置換文字)
-mozi6.bas-
#!/usr/bin/scriba
mozi="4UME-4LAB-4SCR-4IPT-4BASIC"
print "Content-Type: text/html; charset=euc-jp\n\n"
print "<html><body>"
print REPLACE(mozi,"-","@"),"<br>"
print REPLACE(mozi,"4","ZZZZ"),"<br>"
print REPLACE(mozi,"LAB","$$$"),"<br>"
print REPLACE("AA-AO-BB-AB-OO","AB",""),"<br>"
print "</body></html>" |
▼実行結果
4UME@4LAB@4SCR@4IPT@4BASIC ZZZZUME-ZZZZLAB-ZZZZSCR-ZZZZIPT-ZZZZBASIC 4UME-4$$$-4SCR-4IPT-4BASIC AA-AO-BB--OO |
最初のREPLACEで変数mozi内の-を@に換えて出力しています。
次のREPLACEでは4をZZZZに、その次はLABを$$$に換えてます。
このように検索文字に置き換えたい文字を、置換文字に置き換えしたい文字を入力してください。
最後のREPLACEはABを何もない文字に置き換え、つまりABを消しています。
5.分割しよう
一つの文字列を区切り文字で複数の変数に分割する事が可能です。splitを使います。
SPLIT 文字列 by 区切り文字 to 変数1,変数2 [,変数3〜〜]
-mozi7.bas-
#!/usr/bin/scriba
mozi="ABCDEFG<>HIJKLMN"
split mozi by "<>" to a,b
print "Content-Type: text/html; charset=euc-jp\n\n"
print "<html><body>"
print "a:",a,"<br>"
print "b:",b,"<br>"
split "090-1234-0000" by "-" to tel1,tel2,tel3
print "tel1:",tel1,"<br>"
print "tel2:",tel2,"<br>"
print "tel2:",tel2,"<br>"
print "</body></html>" |
▼実行結果
a:ABCDEFG b:HIJKLMN tel1:090 tel2:1234
tel2:1234 |
最初のsplitで変数moziを区切り文字<>でa,bに分割しています。
その次のprintで変数aの内容を、その次でbの内容を表示しています。
ABCDEFG<>HIJKLMNという文字がちゃんと<>を中心に二つに分けられている(代入されている)のがわかります
その次は変数を使用せず直接文字列[090-1234-0000]をsplitに伝えています。
ちゃんと-で区切ってtel1,tel2,tel3の変数に代入されているのがわかります。 |
|