HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2018
0929
とあるプログラマ文字列型変数の数字判定モジュール0解決


とあるプログラマ

リンク

2018/9/29(Sat) 21:08:39|NO.85475

文字列が数字のみか否かを判別するモジュールです。
文字列に数字以外が含まれているとstatに-1を返し、含まれていなければその数字が返ります。
int関数だと文字が先頭に含まれていた場合0が出力されますが、こちらは複雑に文字が入っていても判別できます。
第2パラに1を指定すると文字を除去した数字が返ります。(こっちの機能のほうが使うこと多いかもしれません)
他のプログラムを作るついでに作ったので、ディテールは勘弁してくださいm(_ _)m (お好みに自由に改変してもらって構いません)
以下ソースです。

#module // 文字列に数字以外が入っているかを調べる命令 // 第2パラに1を指定すると数字以外を除去して返します。 #deffunc checkint str string , int remove sdim unicode,strlen(string)*2+2 sdim buf_int,strlen(string) if string="" : return -1 //文字列が空だったら-1が返る dim char,strlen(string)+1 r=limit(remove,0,1) flag_int=0 cnvstow unicode,string foreach char char.cnt = wpeek(unicode,cnt*2) if char.cnt=0 : break if r=0 { if char.cnt<48 | 57<char.cnt : flag_int=-1 : break //数字以外が入っていれば返り値は-1 }if r=1 { if char.cnt<48 | 57<char.cnt :goto *@f } buf_int+=cnvwtos(char.cnt) *@ loop if flag_int!-1 : flag_int=int(buf_int) if buf_int="" : flag_int=-1 //文字のみなら-1 return flag_int //statに結果を出力 #global // このモジュールを使う場合はこのコメントから下を消して適当な名前をつけて // commonフォルダかソースフォルダにぶちこんでください。 // 使用するプログラムでインクルードしてください。 //ここからサンプル checkint "01234" mes "1つめ: "+stat //文字が入っていないと数字がstatに代入されます mes checkint "ABC 01234 DEF" mes "2つめ: "+stat //文字が入っていると-1が返されます mes checkint "ABC 01234 DEF",1 mes "3つめ: "+stat //第2パラに1を指定すると数字以外が除去されて返されます mes checkint "ABCDEF",1 mes "4つめ: "+stat //文字のみだと-1が返ります mes checkint "" mes "5つめ: "+stat //文字列が空だと-1が返ります mes //以下応用サンプル sdim num mes "文字列をいれてくらさい" input num,100,20 id=stat objsize 100,20 chkbox "文字を除去",remove button goto "ちぇっく",*check stop *check checkint num,remove num=stat objprm id,stat stop



この記事に返信する


ONION software Copyright 1997-2018(c) All rights reserved.