ファイル内の文字列の種類と出現数 への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 shu  (社会人)
投稿日時
2017/11/6 00:08:53
TextBox1にファイルの内容が設定されていて
TextBox2に結果を表示するようなサンプルです。あくまで記述が効率的なだけで
スピード的には満足できるものになるかは保証できません。
実際にはファイルからの読み込みはFile.ReadAllTextを使って
1つの文字列変数にファイルの内容をすべて読み込んでしまうと
よいのではないでしょうか。
TextBox2に結果を表示するようなサンプルです。あくまで記述が効率的なだけで
スピード的には満足できるものになるかは保証できません。
実際にはファイルからの読み込みはFile.ReadAllTextを使って
1つの文字列変数にファイルの内容をすべて読み込んでしまうと
よいのではないでしょうか。
Imports System.Text
Imports System.Text.RegularExpressions
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim reg As New Regex("ma(?<gp>\d+)")
Dim res As New StringBuilder
For Each itm In (From a In reg.Matches(TextBox1.Text).OfType(Of Match)
Select gp = a.Groups("gp").Value
Group By gp Into cnt = Count)
res.Append($"ma{itm.gp}:{itm.cnt}回 ")
Next
TextBox2.Text = res.ToString
End Sub
End Class
投稿者 VB初心者  (社会人)
投稿日時
2017/11/5 19:33:41
今、テキストファイルを1行ずつ読み込んで、処理させています。
ファイル内に下記のようなデータが入っています。
ファイル内のmaに続く数字毎の出現数をカウントする場合、どんなやり方が効率的なのか
教えて下さい。
ma300 : 2回、ma1000:1回のように結果を得たいです。
よろしくお願いします。
<テキストファイル内のデータ例>
x0y0 ma300
qazx ma300
asdfd ma1000(0.042)
ファイル内に下記のようなデータが入っています。
ファイル内のmaに続く数字毎の出現数をカウントする場合、どんなやり方が効率的なのか
教えて下さい。
ma300 : 2回、ma1000:1回のように結果を得たいです。
よろしくお願いします。
<テキストファイル内のデータ例>
x0y0 ma300
qazx ma300
asdfd ma1000(0.042)
正規表現をうまく使うのですね。私はリストボックスに追加していく感じで作成していました。
40,000行程度のテキストファイルで試しても、スピード的に全然問題ありませんでした。