テキストファイルの内容をタブを取り除いて配列に格納する
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2021/10/6 17:52:05
> 配列(1) = 100
> 配列(2) = 200
> 配列(3) = 100
> 配列(4) = 200
配列(0) は?
> 配列(2) = 200
> 配列(3) = 100
> 配列(4) = 200
配列(0) は?
Imports System.IO
Module Module1
Sub Main()
Dim result As New List(Of String)() From {"配列(0)の値"}
For Each cols In File.ReadLines("D:\example.txt").Select(Function(s) s.Split(vbTab(0)))
If cols.Length = 4 Then
result.Add(cols(2))
result.Add(cols(3))
End If
Next
Dim 配列() As String = result.ToArray()
End Sub
End Module
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2021/10/6 17:56:05
ループを使わずに 1 行にまとめた場合
Dim 配列 = "".Split().Concat(File.ReadLines("D:\example.txt").SelectMany(Function(s) s.Split(vbTab(0)).Skip(2).Take(2).ToArray())).ToArray()
投稿者 nal  (社会人)
投稿日時
2021/10/8 09:42:36
魔界の仮面弁士 様
ありがとうございました!解決しました。
ありがとうございました!解決しました。
投稿者 nal  (社会人)
投稿日時
2021/10/26 17:39:06
魔界の仮面弁士様
申し訳ありません、再び質問があります。以前の回答頂いた(1行)でまとめた場合のコードで実践しています。Dimで宣言したローカルの配列にテキストを格納後、その配列を他のフォームで、かつdouble型に変換して使用したいのですが上手くいかなく躓いています。
ローカルで宣言した配列(String型)をグローバル変数かつDouble型に変換することはできるのでしょうか?できれば、回答いただいた1行にまとめた方のコードでやりたいです。
宜しくお願いします。
申し訳ありません、再び質問があります。以前の回答頂いた(1行)でまとめた場合のコードで実践しています。Dimで宣言したローカルの配列にテキストを格納後、その配列を他のフォームで、かつdouble型に変換して使用したいのですが上手くいかなく躓いています。
ローカルで宣言した配列(String型)をグローバル変数かつDouble型に変換することはできるのでしょうか?できれば、回答いただいた1行にまとめた方のコードでやりたいです。
宜しくお願いします。
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2021/10/26 20:45:32
Double 型の配列とするのであれば、こうですね。
代入先の変数は、ローカル変数でも良いですし、
Form1 上のフィールド変数でも良いですし、
Module1 上のグローバル変数でも構いません。
あるいは、Form1 で扱っている変数を Form2 に受け渡すような目的であれば、
相手のフォームにメソッドを用意し、そこに引数として渡すといった方法を採れます。
メソッドの代わりに、プロパティやコンストラクタ引数で渡しても OK。
代入先の変数は、ローカル変数でも良いですし、
Form1 上のフィールド変数でも良いですし、
Module1 上のグローバル変数でも構いません。
Dim doubleArray As Double() = File.ReadLines("D:\example.txt").SelectMany(Function(s) s.Split(ControlChars.Tab).Skip(2).Take(2).Select(AddressOf Convert.ToDouble).ToArray()).ToArray()
あるいは、Form1 で扱っている変数を Form2 に受け渡すような目的であれば、
相手のフォームにメソッドを用意し、そこに引数として渡すといった方法を採れます。
メソッドの代わりに、プロパティやコンストラクタ引数で渡しても OK。
Public Class Form2
Private data As Double() = {}
Public Sub LoadValues(d As Double())
data = d
ListBox1.DataSource = data
End Sub
End Class
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim 配列1 As Double() = {100R, 200.0, 100.0#, 200}
Dim f As New Form2()
f.LoadValues(配列1)
f.Show(Me)
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim 配列1 As Double() = {10.0R, 20.0, 10.0#, 20}
Using f As New Form2()
f.LoadValues(配列1)
f.ShowDialog(Me)
End Using
End Sub
End Class
投稿者 nal  (社会人)
投稿日時
2021/10/29 10:16:08
魔界の弁士様
回答ありがとうございます。
頂いたやり方でdouble型へ変換し、その後その配列をグローバル変数へ代入することで解決できました!
回答ありがとうございます。
頂いたやり方でdouble型へ変換し、その後その配列をグローバル変数へ代入することで解決できました!
TABTAB100TAB200改行
TABTAB100TAB200改行
のとき、
配列(1) = 100
配列(2) = 200
配列(3) = 100
配列(4) = 200
と格納したいんですが、どうしたら良いでしょうか?
言語はvb.netです。よろしくお願いします!