文字列を配列変数にセットする
文字列を配列変数にセットするときは、strcpy関数を使用します。
以下のサンプルソースは、文字列を格納できる配列変数「@str1」に「MIFES8」をセットして、カーソル位置に挿入しています。
*setMIFES8 文字列MIFES8を@str1にセットする
@1 = strcpy( @str1, "MIFES8")
insstr( @str1 )
*
※セットする文字数を指定したいときは、strncpy関数をご利用ください。
文字列を比較する
数値の比較は論理式で行いますが、文字列を比較するときはstrcmp関数を使用します。
以下のサンプルソースは、パスワードとして2度文字列を入力し、同じ文字列が入力されたかどうかをチェックしています。
*chkPassWD 入力した2つのパスワードが等しいかチェックする
@1 = input( @str1, "パスワードを入力" ) ;1度目入力
@2 = input( @str2, "もう一度パスワードを入力" ) ;2度目入力
if strcmp( @str1, @str2 ) != 0 ;2つのパスワードが異なる時
@3 = messagebox( "パスワードが違います。", "パスワード入力", MB_OK|MB_ICONSTOP )
else ;それ以外
@3 = messagebox( "パスワードOKです。", "パスワード入力", MB_OK )
endif
*
※大文字/小文字を区別せずに比較したいときは、strcmpi関数をご利用ください。
文字列と文字列をつなぐ
文字列と文字列をつなげるときには、sprintf関数を使用します。
以下のサンプルソースは、ユーザーが入力したファイル名「@str1」に、拡張子「.dat」を付けて「@str2」にセットして、カーソル位置に挿入しています。
*ADDdotdat 文字列の後に「.dat」を追加する
@1 = input( @str1, "ファイル名を入力してください。" )
@2 = sprintf( @str2, "%s%s", @str1, ".dat")
insstr( @str2 )
*
文字列の一部を取り出す
strncpy関数で取り出して、別の変数にセットする方法です。
以下のサンプルソースでは、@str1の5文字目から10文字分を@str2にセットしています。
文字列を格納する配列変数の1文字目は[0]番目なので、「@str1の5文字目」は「&@str1[4]」と記述します。
*get4to10 文字列の4文字目から10文字分を取り出す
@1 = strcpy( @str1, "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
strncpy( @str2, &@str1[4], 10 )
insstr( @str2 )
*
文字列を数値に変換して計算する
キー入力した数字列を数値に変換して計算するという処理は比較的よく行われます。
文字列を数値に変換するにはatol関数を使います。
以下のサンプルソースは、ユーザーが入力した数字列を数値に変換し、16倍して、結果をメッセージボックスに表示しています。
*16bai 16倍する
@1 = input( @str1, "値を入力してください" )
@2 = atol( @str1 ) * 16
@3 = sprintf( @str2, "%s × 16 = %d", @str1, @2 )
@4 = messagebox( @str2, "16倍しました", MB_OK )
*
文字列内の指定文字の位置を得る
関数はないので、while構文で1文字ずつ探します。
以下のサンプルソースは@str1にセットされた「MIFES.dat」の「.」の位置を調べています。
*position ピリオドの位置を調べる
@1 = sprintf( @str1, "%s", "MIFES.dat") ;@str1に「MIFES.dat」を、@1には文字数をセット。
@2 = 0
while @2 < @1 ;@str1の最後まで1文字ずつ繰り返し
strncpy( @str3, &@str2[@2], 1) ;1文字だけ@str3に取り出し
if strcmp( ".", @str3) == 0 ;@str3が「.」なら
printf( ".は%d文字目", @2+1)
exit ;終了
else
@2 = @2 + 1 ;次の文字へ移動
endif
wend ;ここまでの処理を繰り返す
*
この資料の内容は予告なしに変更されることがあります。
いかなる場合でも、この資料の内容およびその運用の結果に関しては一切の責任を負いません。
この資料に記載されている会社名、製品名は、各社の登録商標または商標です。
この資料の一部または全部を無断で使用、複製することはできません。
Copyright(C) MEGASOFT Inc.