パソコン活用研究5番街(Visual Basic、Excel(VBA)、BASIC プログラミング研究)


標準入力の小技(分割して読み取り)
(準備中)


VB.netのConsole.readLine()は1行を文字列として読み込むので、
区切り記号で文字列を分割したり、数値として読み込みたい場合は文字列から数値への
変換などが必要です。



1.空白区切りで文字列を読み込む

VB.net(VB2005以降)のConsole.Readline()は1行分を丸々読み込みます。
その1行から空白区切りでデータを読み取りたい場合は、StringクラスのSplitメソッドを
使う方法があります。
空白を区切り記号としたい場合は、Split(" ")というようにSplitの引数に空白である" "を
指定します。

以下のプログラムは空白を区切り記号にして文字列を分割して読み込み
分割して読み込んだ文字列を表示するというプログラムです。

inputs = str.Split(" ")
でinputsという文字列配列に分割して読み取ったデータ(文字列)を保存します。

For Each s In inputs
でinputsという文字列配列からひとつの文字列を順に取り出して表示していきます。


Imports System

Module Program
Sub Main(args As String())
Dim str As String
Dim inputs() As String
Dim s As String
str = Console.ReadLine()
inputs = str.Split(" ")

For Each s In inputs
Console.WriteLine(s)
Next

End Sub
End Module


実行例



2.カンマ( , )を区切り記号にして文字列を取り込む
次は、カンマ( , )を区切り記号にして文字列を取り込む場合です。

これも Split(",") というようにSplitメソッドの引数に","を指定することで実現できます。

以下は、カンマ区切りで2つの文字列(数字の文字列)を読み込み、整数に変換して
引き算するプログラムです。

s = str.Split(",")
カンマを区切り記号として文字列を取り込む。

n(0) = Integer.Parse(s(0))
n(1) = Integer.Parse(s(1))
文字列を整数に変換しています。


Imports System

Module Program
Sub Main(args As String())
Dim str As String
Dim s(10) As String
Dim n(10) As Integer
str = Console.ReadLine()
s = str.Split(",")

n(0) = Integer.Parse(s(0))
n(1) = Integer.Parse(s(1))
Console.WriteLine(n(0) - n(1))

End Sub
End Module

実行例




上記プログラムはカンマで区切られた2つの文字列を読み込んでいましたが、
次は、カンマで区切られた文字列の数は不定のケースです。
カンマ区切りの文字列(数値)を全て読み込み、その数値の和を求めます。

Imports System

Module Program
Sub Main(args As String())

Dim str As String
Dim s, inputs() As String
Dim sum, n As Integer
str = Console.ReadLine()
inputs = str.Split(",")
sum = 0
For Each s In inputs
sum = sum + Integer.Parse(s)
Next

Console.WriteLine(sum)

End Sub
End Module


実行例



(補足)
ここでは文字列を整数型に変換するのに、Integer.parseを使いましたが
文字列を単精度実数に変換するのに、Single.Parseを使います。

10進数の小数を2進数に変換するプログラムでは
文字列を単精度実数に変換するのに、Single.Parse()を使った例があります。
-> シフト演算とビット演算を参照






TopPage > Visual BasIc&Excel活用研究目次