カンマ区切りのテキストを含む文字列があります。カンマ区切りのテキストはExcelの.csvファイルから取得されるため、7列幅のデータが数百行あります。このファイルの行の例は次のとおりです。
2012-10-01,759.05,765,756.21,761.78,3168000,761.78
最初の列の日付で数百行を検索したいと思います。正しい行を見つけたら、カンマ区切りの文字列の最初の位置にある数値を抽出したいので、この場合は数値759.05を抽出して、変数「Open」に割り当てます。
これまでの私のコードは次のとおりです。
strURL = "http://ichart.yahoo.com/table.csv?s=" & tickerValue
strBuffer = RequestWebData(strURL)
Dim Year As String = 2012
Dim Quarter As String = Q4
If Quarter = "Q4" Then
Dim Open As Integer =
End If
右の行に絞り込むことができたら、row.Split( "、")(1).Trim)のようなものが機能する可能性があると思います。
私はかなりの研究をしましたが、これを自分で解決することはできません。助言がありますか!?!
追加情報:
Private Function RequestWebData(ByVal pstrURL As String) As String
Dim objWReq As WebRequest
Dim objWResp As WebResponse
Dim strBuffer As String
'Contact the website
objWReq = HttpWebRequest.Create(pstrURL)
objWResp = objWReq.GetResponse()
'Read the answer from the Web site and store it into a stream
Dim objSR As StreamReader
objSR = New StreamReader(objWResp.GetResponseStream)
strBuffer = objSR.ReadToEnd
objSR.Close()
objWResp.Close()
Return strBuffer
End Function
その他の情報:
私のコードのより完全な全体像
Dim tickerArray() As String = {"GOOG", "V", "AAPL", "BBBY", "AMZN"}
For Each tickerValue In Form1.tickerArray
Dim strURL As String
Dim strBuffer As String
'Creates the request URL for Yahoo
strURL = "http://ichart.yahoo.com/table.csv?s=" & tickerValue
strBuffer = RequestWebData(strURL)
'Create Array
Dim lines As Array = strBuffer.Split(New String() {Environment.NewLine}, StringSplitOptions.None)
'Add Rows to DataTable
dr = dt.NewRow()
dr("Ticker") = tickerValue
For Each columnQuarter As DataColumn In dt.Columns
Dim s As String = columnQuarter.ColumnName
If s.Contains("-") Then
Dim words As String() = s.Split("-")
Dim Year As String = words(0)
Dim Quarter As String = words(1)
Dim MyValue As String
Dim Open As Integer
If Quarter = "Q1" Then MyValue = Year & "-01-01"
If Quarter = "Q2" Then MyValue = Year & "-04-01"
If Quarter = "Q3" Then MyValue = Year & "-07-01"
If Quarter = "Q4" Then MyValue = Year & "-10-01"
For Each line In lines
Debug.WriteLine(line)
If line.Split(",")(0).Trim = MyValue Then Open = line.Split(",")(1).Trim
dr(columnQuarter) = Open
Next
End If
Next
dt.Rows.Add(dr)
Next
現在、For Each line in lines
ループ内で、Debug.WriteLine(line)
2,131行を出力します。
から
Date,Open,High,Low,Close,Volume,Adj Close
2013-02-05,761.13,771.11,759.47,765.74,1870700,765.74
2013-02-04,767.69,770.47,758.27,759.02,3040500,759.02
2013-02-01,758.20,776.60,758.10,775.60,3746100,775.60
ずっと...
2004-08-19,100.00,104.06,95.96,100.34,22351900,100.34
しかし、私が期待しているのは、ループDebug.WriteLine(line)
内で一度に1行ずつ出力することです。したがって、最初の出力はであり、次の出力はでFor Each line in lines
あると予想します。最後の出力がDate,Open,High,Low,Close,Volume,Adj Close
2013-02-05,761.13,771.11,759.47,765.74,1870700,765.74
2004-08-19,100.00,104.06,95.96,100.34,22351900,100.34