文字列を操作する関数です。
文字列に含まれている文字の個数を「文字列の長さ」と呼びます。なお全角文字は半角2文字分として扱います(半角文字が1バイトなのに対し全角文字は2バイトを要するため)。
文字列の長さを得るには,Len関数を用います。
#prompt Print Len("ActiveBasic") Print Len("BASIC講座")
実行すると
11 9
のように,文字の長さが取得されているのがわかります。
なお,同じ文字列を複数個つなげた文字列を取得するString$関数があります。
注:関数の返り値(結果)が文字列になる場合,「$」の付いた関数名になることがあります。
#prompt
Dim S As String, T As String
S=String$(20, "-") '(長さ, 文字列) の順で指定する
T=String$(15, "AB")
Print S, Len(S)
Print T, Len(T)
実行すると
------------------------- 20 ABABABABABABABABABABABABABABAB 30
のようになります。文字列の長さは参考のため表示するようにプログラムしましたが,String$関数の定義から文字列の長さはすぐにわかりますね。
問21 文字列をInput文で入力し,その文字列の長さを表示するプログラムを作成せよ。
文字列の一部分を取り出したものを「部分文字列」といいます。部分文字列を取り出す関数は,以下のものがあります。
#prompt Dim S As String S="ActiveBasic Programing" Print Left$(S, 6) Print Right$(S, 10) Print Mid$(S, 7, 5)
まず,このプログラムを見て結果を予測してみましょう。
答えは以下の通りです。
Active Programing Basic
となります。
なお,Mid$関数については3つ目のパラメータ(長さ)を省略できます。この場合,
#prompt Dim S As String S="ActiveBasic Programing" Print Mid$(S, 7)
Basic Programing
のように,文字列の開始地点文字目から文字列の末尾までの文字列を取り出す,という意味になります。
問22 文字列をInput文で入力し,もしその長さが4以上であればその文字列の左から4文字を取り出して表示する(長さが3以下であれば何もしないで終了)プログラムを作成せよ。
BASICでは,文字列を数値に変換したりあるいはその逆をするのに
#prompt Dim A As Long, S As String A=70 S=A ' この行はエラーになる S="125" A=S ' この行はエラーになる
のように,直接代入することはできません。このようなことをしたい場合のために専用の関数があります。
例えば,以下のようなこともできます。
#prompt Dim S As String S="14" Print 7+Val(S) ' 「7+14」と同じ。 Print S+Str$(52) ' 「S+"52"」と同じ。足し算ではなく文字列の連結になる。
21 1452
なおStr$関数で文字列を数値に変換する場合,もし数値に変換できないような文字列が与えられた場合(例えば "123ABC" など),その文字列の手前側から数えて数値とみなせる部分までを数値に変換します。
よって,例えば Val("123ABC") は「123」を返します。
注:もし最初の文字が数値に変換不能な文字であれば,Val関数は「0」を返します。