2016-02-02 45 views
-1

並感謝您的任何指導,您可以給。VB.NET文本文件分析許多條目一行分隔空間

我想讀取一個文本文件並捕獲所有值作爲分隔符,並將每個條目輸入到我的SQL Server表中的字段。有時條目有三個字符,有時候條目是四個字符。文本文件條目的

例子:

YYYY: AAA BBBB CCCC DDDD EEEE 
     FFF GGG HHH III JJJ LLL 

    ZZZZ: 111 2222 3333 4444 5555 
     777 888 999 000 123 456 

我使用一個StreamReader。對於這一切,我只是有點新鮮感。我非常感謝你對我的耐心。

這是最新的嘗試。正是在這一點上,我意識到我不知道如何通過使用空間作爲指標來拉動下一個「事物」而不知道如何解析整條生產線。我一直在尋找一段時間。我似乎沒有在尋找正確的主題\命令。

Do 
    Dim line As String = Streamy.ReadLine 
    Dim Model As String = "" 

    If line.Contains("MODEL") Then 
     Dim newModelData As New ModelData 
     Model = line.Substring(6, 3) 
     newModelData.Model = line.Substring(6, 3) 

     If newModelData.Model = " " Then 
      line.Skip(1) 
     Else 
      ModelDataList.Add(newModelData) 
     End If 
    End If 

    If line.Contains("YYYY") Then 
     Dim newModelData As New ModelData 
     newModelData.Model = Model 
     'This part below is where I realized I don't understand 
     'how to parse the line. I've searched online, but 
     'apparently I just don't know the right topic to search for. 

     newModelData.SomeModelInfo = line.Substring(23, 3) 

     ModelDataList.Add(newModelData) 
    End If 

    Loop Until Streamy.EndOfStream 
    db.BulkInsertAll(ModelDataList) 
    Streamy.Close() 
End Using 

末使用 結束小組

+1

數組我可以告訴一個解決方案,但***你嘗試過什麼,什麼是不加工***?感謝您發佈至少一些代碼,但沒有什麼是您嘗試過的和沒有成功的。我們當然可以提供幫助,但您需要先發布您的嘗試。 – Codexer

+0

我真的很抱歉。我已經更新了它。如果你有任何指導,甚至是我應該搜索的術語,謝謝。它似乎並不像'inStr'命令是正確的......或者說網站似乎並沒有這樣做。有人提到要研究line.split(「」)。我明白了,但我一直無法理解如何實現它。 – IrishHound

+0

編輯幫助了很多。就像幫助你的指針一樣 - 看看這兩頁。當你剛接觸SO時,他們非常有幫助。 [問]和[mcve]。 –

回答

0

你可以單獨使用.Split方法用空格分隔字符串 - 像這樣:

Dim line As String = Streamy.ReadLine 
Dim lineParts() As String() = line.Split(" "c) 

這裏會發生什麼事是,lineParts被聲明爲一個字符串數組,並且該符號之後的代碼位將字符串在每個點處分割爲步伐發生。

代碼她的奇數位 - 「」c是爲了確保「」被視爲字符類型而不是字符串類型。

你最終得到的是一個只包含你的文本的數組。

如果行的開頭或末尾有空格,則數組中沒有任何空元素。所以我建議你也使用.Trim方法。所以,你的代碼看起來像現在這樣:

Dim line As String = Streamy.ReadLine 
line = line.Trim(" "c) 
Dim lineParts() As String() = line.Split(" "c) 

現在你可以以你的方式通過lineParts

+0

非常感謝您的時間! – IrishHound