- ベストアンサー
split関数で区切り文字がない場合
b=111.222 a = split(b , ".") ⇒ a(0) = 111 a(1)=222 b=333 a = split(b , ".") ⇒ a(0) = 333 a(1)=333 このような結果が得られるのでしょうか。 それとも区切り文字がない場合、a(0)、a(1)を使用するとコンパイルエラーでしょうか。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
やってみればいいと思うが・・・。 b=111.222 a = split(b , ".") ⇒ a(0) = 111 a(1)=222 これはいい。 b=333 a = split(b , ".") ⇒ a(0) = 333 a(1)=333 「実行時エラー'9':インデックスが有効範囲にありません。」 なお、Split関数は、文字列を扱うのだから、 dim a() as string,b as string b="111.222" a = split(b , ".") のように指定した方がいいと思うが、どうだろう。
その他の回答 (3)
- mu2011
- ベストアンサー率38% (1910/4994)
NO1です。 UBound ( a )で配列の要素数(0相対)が判るので文字列判定しなくてもよいと思いますが如何でしょうか。
お礼
ありがとうございます。 まとめまして再度確認させていただきます。
- imogasi
- ベストアンサー率27% (4737/17069)
VBAか.NETか質問に明記してほしいが。 VBAなどでは、こういう場合のことのためにUBOUND()があるのを知らないのかな。 Sub test01() a = "333" 'a = "333,2" x = Split(a, ",") For i = 0 To UBound(x) MsgBox x(i) Next i End Sub をやってみればわかる。適当な例を'a = "333,2"のところに入れて、他をコメントアウトして実行してみたら。 ーー VB.NET系では http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard27.htm など参照。Length。
お礼
ありがとうございます。 まだ環境が整ってなくコンパイルできません。言語はvb.netです。 実は体重を入力して、整数部2桁、小数点1桁の入力チェックを行うため、 split関数を使用して、その後に入力チェックを行うようにしていました。 皆さんの回答からすると、a(0)、a(1)を入力チェックしているので 小数点が入力されなかった場合にコンパイルエラーになってしまいます。 入力チェックを行う前に、入力された文字列に対して Containsを用いて小数点が含まれているかのチェックをするのが最善でしょうか。
- mu2011
- ベストアンサー率38% (1910/4994)
a(0)はOK、a(1)は実行時エラーです、ご自身で検証すればすぐに判ります。 それで真のご質問は何でしょうか?
お礼
ありがとうございます。 まだ環境が整ってなくコンパイルできません。言語はvb.netです。 実は体重を入力して、整数部2桁、小数点1桁の入力チェックを行うため、 split関数を使用して、その後に入力チェックを行うようにしていました。 皆さんの回答からすると、a(0)、a(1)を入力チェックしているので 小数点が入力されなかった場合にコンパイルエラーになってしまいます。 入力チェックを行う前に、入力された文字列に対して Containsを用いて小数点が含まれているかのチェックをするのが最善でしょうか。
お礼
ありがとうございます。 まだ環境が整ってなくコンパイルできません。言語はvb.netです。 実は体重を入力して、整数部2桁、小数点1桁の入力チェックを行うため、 split関数を使用して、その後に入力チェックを行うようにしていました。 皆さんの回答からすると、a(0)、a(1)を入力チェックしているので 小数点が入力されなかった場合にコンパイルエラーになってしまいます。 入力チェックを行う前に、入力された文字列に対して Containsを用いて小数点が含まれているかのチェックをするのが最善でしょうか。