• ベストアンサー

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)を使用するとコンパイルエラーでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

やってみればいいと思うが・・・。 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 , ".") のように指定した方がいいと思うが、どうだろう。

craftx
質問者

お礼

ありがとうございます。 まだ環境が整ってなくコンパイルできません。言語はvb.netです。 実は体重を入力して、整数部2桁、小数点1桁の入力チェックを行うため、 split関数を使用して、その後に入力チェックを行うようにしていました。 皆さんの回答からすると、a(0)、a(1)を入力チェックしているので 小数点が入力されなかった場合にコンパイルエラーになってしまいます。 入力チェックを行う前に、入力された文字列に対して Containsを用いて小数点が含まれているかのチェックをするのが最善でしょうか。

その他の回答 (3)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

NO1です。 UBound ( a )で配列の要素数(0相対)が判るので文字列判定しなくてもよいと思いますが如何でしょうか。

craftx
質問者

お礼

ありがとうございます。 まとめまして再度確認させていただきます。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

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。

craftx
質問者

お礼

ありがとうございます。 まだ環境が整ってなくコンパイルできません。言語はvb.netです。 実は体重を入力して、整数部2桁、小数点1桁の入力チェックを行うため、 split関数を使用して、その後に入力チェックを行うようにしていました。 皆さんの回答からすると、a(0)、a(1)を入力チェックしているので 小数点が入力されなかった場合にコンパイルエラーになってしまいます。 入力チェックを行う前に、入力された文字列に対して Containsを用いて小数点が含まれているかのチェックをするのが最善でしょうか。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

a(0)はOK、a(1)は実行時エラーです、ご自身で検証すればすぐに判ります。 それで真のご質問は何でしょうか?

craftx
質問者

お礼

ありがとうございます。 まだ環境が整ってなくコンパイルできません。言語はvb.netです。 実は体重を入力して、整数部2桁、小数点1桁の入力チェックを行うため、 split関数を使用して、その後に入力チェックを行うようにしていました。 皆さんの回答からすると、a(0)、a(1)を入力チェックしているので 小数点が入力されなかった場合にコンパイルエラーになってしまいます。 入力チェックを行う前に、入力された文字列に対して Containsを用いて小数点が含まれているかのチェックをするのが最善でしょうか。

関連するQ&A

専門家に質問してみよう