2015-04-25 3 views
-5

У меня есть текст из текстового файла это имя Lucky.iniVb.net Чтение текста из файла

[Group1]
Number = 0811
Купон = 0118
[Group2]
Номер = 4852
Купон = 7112

Как читать этот текст текстового поля, но я хочу, чтобы прочитать номер после «=» и у меня две группы. Во-первых, дешевые и Во-вторых, богатые
enter image description here

+2

Если вы не можете переписать/пересмотреть, как хранятся данные (например, сериализации, или CSV), вам придется прибегнуть к PInvokes сортировать это. Файлы INI никогда не предназначались для использования в качестве баз данных. – Plutonix

ответ

0

Я использовал Regex для разбора текстового файла. Смотрите ниже код

Imports System.IO 
 
Imports System.Text.RegularExpressions 
 
Imports System.Data 
 
Public Class Form1 
 
    Const FILENAME As String = "c:\temp\test.txt" 
 

 
    '[Group1] 
 
    'Number = 0811 
 
    'Coupon = 0118 
 
    '[Group2] 
 
    'Number = 4852 
 
    'Coupon = 7112 
 
    Sub New() 
 

 
     ' This call is required by the designer. 
 
     InitializeComponent() 
 

 
     ' Add any initialization after the InitializeComponent() call. 
 
     Dim dt As New DataTable 
 
     dt.Columns.Add("Group", GetType(String)) 
 
     dt.Columns.Add("Number", GetType(String)) 
 
     dt.Columns.Add("Coupon", GetType(String)) 
 

 
     Dim input As String = File.ReadAllText(FILENAME) 
 
     Dim pattern As String = "[^\[]*\[(?'name'[^\]]+)\]\s*Number\s+=\s*(?'number'\d+)\s*Coupon\s*=\s*(?'coupon'\d+)" 
 
     Dim expr As New Regex(pattern, RegexOptions.Singleline) 
 

 
     Dim matches As MatchCollection = expr.Matches(input) 
 
     For Each m As Match In matches 
 
      Dim name As String = m.Groups("name").Value 
 
      Dim number As String = m.Groups("number").Value 
 
      Dim coupon As String = m.Groups("coupon").Value 
 
      dt.Rows.Add(New String() {name, number, coupon}) 
 
     Next m 
 

 
     DataGridView1.DataSource = dt 
 

 
     Dim richNumber = dt.Rows(0)("number") 
 
     Dim richCoupon = dt.Rows(0)("coupon") 
 

 
     Dim cheapNumber = dt.Rows(1)("number") 
 
     Dim cheapCoupon = dt.Rows(1)("coupon") 
 

 
    End Sub 
 

 
End Class 
 
​

Смежные вопросы