<Split関数で配列作成、UBoundで個数の判断> こんにちは、Ken3です。 今回は、 Split関数で配列作成、 UBoundで個数の判断 をやってみたいと思います。 /* * 1.便利な関数あるんだね */ 田舎者プログラマーKen3は、都会に在る便利な関数を知らなかった。 その1つがSplit関数かな。 英語得意じゃないので単語の本当の意味はわからないけど、 トランプのブラックジャックでSplitってルールがあって、 プレーヤーが、最初に賭けたチップと同額のチップを追加して賭け、 最初に配られた2枚のカードを2つの手に分けることができる 今回解説するのは、 文字列を区切り文字で分けて配列を作成する Split関数だけど、頭の中でトランプ遊びとつながったのは不思議だった。 ~~~~~~~~~ そんな話は、置いといて、 /* * 2.Split関数のサンプル */ 簡単にサンプル書くと、 -- test024-1.asp <%@LANGUAGE=VBScript%> <html> <head> <title>Split関数のサンプル</title> </head> <body> <h2>Split関数のサンプル</h2> test024-1.asp<br> 簡単にカンマで分けられたデータから配列を作ってみます<br> <hr> strBOX = Split("Ken3,ASP不得意,VBA少しできる", ",")<br> と分解元文字列と区切り文字を渡すと、結果がstrBOXに配列で返ります。<br> 結果<br> <% strBOX = Split("Ken3,ASP不得意,VBA少しできる", ",") '配列データを作成 Response.Write "strBOX(0) -- " & strBOX(0) & "<BR>" '中身を表示 Response.Write "strBOX(1) -- " & strBOX(1) & "<BR>" '中身を表示 Response.Write "strBOX(2) -- " & strBOX(2) & "<BR>" '中身を表示 %> <hr> 終了です。<br> </body> </html> ---- 関数の使い方は、 ^^^^^^^^^^^^^^ strBOX = Split("Ken3,ASP不得意,VBA少しできる", ",") '配列データを作成 と 分解元の文字列と区切り文字を渡すと、 Response.Write "strBOX(0) -- " & strBOX(0) & "<BR>" '中身を表示 Response.Write "strBOX(1) -- " & strBOX(1) & "<BR>" '中身を表示 みたいに、配列のデータとして値が返ります。 だから何?って感じだと思いますが、、、、 http://www.ken3.org/cgi-bin/test/test024-1.asp で、サンプル実行できます。 /* * 3.UBoundで個数の判断 */ strBOX = Split("Ken3,ASP不得意,VBA少しできる", ",") '配列データを作成 と、 固定の文字列をバラしてました が、 世の中、そんなに甘くないですよね、 ユーザーが入力した検索条件をバラして使用してる人達は、 どうしてるんだろうね? 入れられてから、はじめて区切り文字の個数がわかる場合は? そんな時、便利なのが、 UBound(配列変数) とやると、 配列のインデックス最大値(数)を返してくれるので、 組み合わせて使うと便利です。 フォームでスペースで区切られた条件を入力させ、 バラした結果を表示してみます。 -- test024-2.asp <%@LANGUAGE=VBScript%> <html> <head> <title>SplitとUBoundのサンプル</title> </head> <body> <h2>SplitとUBoundのサンプル</h2> test024-2.asp<br> <br> <% '頭で、入力パラメーターDATAがあるかチェックする If IsEmpty(Request.Form("DATA")) = True Then 'そのまま下のHTMLフォームを実行 %> スペースで区切って好きな言葉を入れてください<br> <FORM ACTION="test024-2.asp" METHOD="POST"> <INPUT TYPE="text" SIZE="40" NAME="DATA" VALUE="好き 嫌い 普通"><BR> <INPUT TYPE="submit" VALUE="分割実行"> <INPUT TYPE="reset" VALUE="クリア"> </FORM> <% Else 'データが入力されていたら、バラして表示する Dim strMOTO strMOTO = Request.Form("DATA") Response.Write "元のデータは、[" & strMOTO & "]です<br>" 'スペースでデータをバラす strBOX = Split(strMOTO, " ") '区切り文字にスペース指定 'ループでデータを表示させる For i = 0 To UBound(strBOX) 'UBound使用インデックス最大値までループ Response.Write "<BR>" Response.Write "strBOX(" & i & ") -- " '変数名表示 Response.Write strBOX(i) '中身を表示 Next End If %> <hr> 終了です。<br> </body> </html> ---- 軽く解説すると、 フォームからデータが来てるかチェックする ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <% '頭で、入力パラメーターDATAがあるかチェックする If IsEmpty(Request.Form("DATA")) = True Then 'そのまま下のHTMLフォームを実行 %> いつのまにか好きになった関数IsEmptyでパラメータのチェックを行い、 無い時は(True) 下記のフォームで入力させる スペースで区切って好きな言葉を入れてください<br> <FORM ACTION="test024-2.asp" METHOD="POST"> <INPUT TYPE="text" SIZE="40" NAME="DATA" VALUE="好き 嫌い 普通"><BR> <INPUT TYPE="submit" VALUE="分割実行"> <INPUT TYPE="reset" VALUE="クリア"> </FORM> ここのポイントは、 ACTION="test024-2.asp" で、自分自身を呼んでるとこです *自分の心の中でも意見が分かれるところで、 HTMLの入力部とASPの処理部に分けたほうが派 と 今回みたいに、処理を1つにするか、、、 受け取ったデータを処理する ^^^^^^^^^^^^^^^^^^^^^^^^^^ <% Else 'データが入力されていたら、バラして表示する Dim strMOTO strMOTO = Request.Form("DATA") Response.Write "元のデータは、[" & strMOTO & "]です<br>" で、まずパラメーターで受け取った元データを表示してます。 次に 'スペースでデータをバラす strBOX = Split(strMOTO, " ") '区切り文字にスペース指定 で、配列を作成してます。 ここがサンプルのポイント、 'ループでデータを表示させる For i = 0 To UBound(strBOX) 'UBound使用インデックス最大値までループ Forでループを作る時、 0からUBound(strBOX)までのループにしてます。 UBound(配列)が配列の最大インデックスなので、 0〜最後までのループが完成します。 あとは、 Response.Write "<BR>" Response.Write "strBOX(" & i & ") -- " '変数名表示 Response.Write strBOX(i) '中身を表示 Next こんな感じで、芸無く表示しました。 http://www.ken3.org/cgi-bin/test/test024-2.asp でテストできます。 いろいろスペースで区切った文字を入れて、チェックしてください。 /* * 4.終わりの挨拶 */ 今回は、 ・Splitで文字列を分解して配列作成 ~~~~~ ・UBoundで作成された配列の数を求めてループを作成 ~~~~~~ でした。 そろそろDBかなぁやはり。 イヤ、まだまだ違うネタで、、、、 素朴な疑問あったら、気軽に、 メール、掲示板に書き込んでくださいね。 ASP、VBScript勉強中の三流プログラマーのKen3でした。
ここまで、読んでいただきどうもです。目的の情報が見つかったか?少々心配しつつ、、、
感想や質問・要望・苦情など 三流君へメッセージを送る。
下記のフォームからメッセージを送ることができます。
[三流君(TOP ken3.org へ戻る)]
/ [ASPで遊ぶ、失敗する]
/ [ASP記事 バックナンバー目次]
まぁ、基本はデータの受け取りかなぁ。
・[Form等を使用したデータのやり取り]・・・ASPと言っても、HTMLの入力フォームからデータを受け取ります。POSTやGETでやりとりを押さえますか。
次は、データの入出力 で ADOを使った(ADOで接続) と SQLの解説を少々
・[ADOでMdbファイルを使う]・・・MDBと接続して、簡単な追加・更新・削除を行った。
・[ADOでExcelと接続してみた]・・・.xlsと接続してSQLを使ってみた。
・[ADOでCSVと接続してみた]・・・.CSV テキストを読み出した。※更新・削除はできません
広告:
DBが使えるので、あまり使用しないけど、普通のテキストファイル処理
・[テキストファイル処理]・・・ファイルを開いて、書き込む。1行読み込みなどを軽く
VBScriptでFormat関数が無いなど、微妙にVBAと違うけど
[VBScript関数関係の説明]・・・少し、処理を書いてみた。
[その他処理サンプル]・・・あまり良いサンプル作れなかったけど。。。
何かの参考となれば幸いです。
[三流君(TOP ken3.org へ戻る)]
/ [ASPで遊ぶ、失敗する]
/ [ASP記事 バックナンバー目次]