<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記事 バックナンバー目次]