如何在vb.net中的文本文件中读取重复的字符串

EmPlusPlus

我希望该程序打开一个文本文件并找到那些特定的字符,然后将其后的单词添加到列表中(每个字符在列表中都有特定的子项)。如果没有重复,它会很好地工作。但是如果我有这样的列表:

    /* First row of the list */
#Alireza
%Human
&1
@$1200
$*1
*$1000
   /* ' Second row */
#Behzad
%Human
&1
@$1340
$*1
*$1000
   /* ' And third row */
#Samaneh
%Human
&1
@$1570
$*1
*$1230

那么它只会添加第一行。我也做了一个while循环,但只会将第一行添加到其他行。有没有人可以帮忙!(顺便说一下,我的清单包括6列)

这是代码:

   Public code As String
   Public cat As String
   Public stock As Integer
   Public price As Double
   Public sold As Double
   Public cost As Double
   Public i As Integer

Public Sub _Load(ByVal FileName As String)

    Dim strLines() As String
    Dim strLine As String


    Dim strData As String
    Dim objFileInfo As New FileInfo(FileName)

    strData = My.Computer.FileSystem.ReadAllText(FileName)

    strLines = strData.Split(New String() {ControlChars.CrLf}, StringSplitOptions.RemoveEmptyEntries)

        For Each strLine In strLines
            If strLine.StartsWith("#") Then
                code = strLine.Substring(1)

            End If
            strLine = Nothing
        Next

        For Each strLine In strLines
            If strLine.StartsWith("%") Then
                cat = strLine.Substring(1)
                Exit For
            End If
            strLine = Nothing
        Next

        For Each strLine In strLines
            If strLine.StartsWith("&") Then
                stock = strLine.Substring(1)
                Exit For
            End If
            strLine = Nothing
        Next

        For Each strLine In strLines
            If strLine.StartsWith("@$") Then
                price = strLine.Substring(2)
                Exit For
            End If
            strLine = Nothing
        Next

        For Each strLine In strLines
            If strLine.StartsWith("$*") Then
                sold = strLine.Substring(2)
                Exit For
            End If
            strLine = Nothing
        Next

        For Each strLine In strLines
            If strLine.StartsWith("*$") Then
                cost = strLine.Substring(2)
                Exit For
            End If
            strLine = Nothing
        Next
End Sub


Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles toolImport.Click
    Dim ans As String



    OpenFileDialog1.Title = "What are you looking for?"
    OpenFileDialog1.InitialDirectory = Application.StartupPath
    OpenFileDialog1.Filter = "text Files (*.txt)|*.txt|Data Files (*.dat)|*.dat|All files (*.*)|*.*"
    OpenFileDialog1.FileName = "myList"
    Try
        If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
            Dim sr As StreamReader = New StreamReader(OpenFileDialog1.FileName)

            Do While sr.Peek > -1
                _Load(OpenFileDialog1.FileName)
                Dim list As New ListViewItem(code)
                list.SubItems.Add(cat)
                list.SubItems.Add(stock)
                list.SubItems.Add(price)
                list.SubItems.Add(sold)
                list.SubItems.Add(cost)
                listClothes.Items.Add(list)
                i += 1
                MessageBox.Show("Your list has been uploaded successfully", "ccc!", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Loop

        End If

    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

End Sub
提姆

我认为“重复字符串”是指文件中有多个项目(每组6列)时如何读取文件。

当前程序仅获取第一项的原因是For,无论找到多少个给定的子项,您都将在找到该子项的第一个项退出循环。

解决此问题的一种方法是将您的子项更改_Load为一个函数,并使其返回一个List(Of ListViewItem)对象,然后您可以迭代对象并将其添加到主列表(ListClothes)中。我也将摆脱StreamReader,因为您在做什么时都不需要它。您正在FileName从中传递属性(包含路径和扩展名)OpenFileDialog,因此您可以在_Load函数中简单地使用它

它看起来像这样:

Public Function _Load(ByVal FileName As String) As List(Of ListViewItem)

    Dim Lines() As String
    Dim List(Of ListViewItem) StockList = New List(Of ListViewItem)
    Dim ListViewItem As StockItem    

    Lines = File.ReadAllText(FileName).Split(New String() _
                 { ControlChars.CrLf}, StringSplitOptions.RemoveEmptyEntries)

    For j = 0 To Lines.Length - 1 Step 6    

        StockItem = New ListViewItem(Lines(j))
        StockItem.SubItems.Add(Lines(j + 1))
        StockItem.SubItems.Add(Lines(J + 2))
        StockItem.SubItems.Add(Lines(j + 3))
        StockItem.SubItems.Add(Lines(J + 4))
        StockItem.SubItems.Add(Lines(j + 5))  

        StockList.Add(StockItem)
    Next

    Return StockList
End Function

上面的代码接受传入的内容FileName,对返回的字符串进行拆分,ReadAllText并删除空条目。

接下来,它循环遍历代码,一次6行。在循环中,将创建一个新的ListViewItem,并填充子项,然后将此ListViewItem添加到中List(Of ListViewItem)

StockList然后返回填充的内容。

在您的button1_Click事件中,可以这样使用它:

Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles toolImport.Click

    Dim ans As String
    Dim stockItems As List(Of ListViewItem)

    OpenFileDialog1.Title = "What are you looking for?"
    OpenFileDialog1.InitialDirectory = Application.StartupPath
    OpenFileDialog1.Filter = "text Files (*.txt)|*.txt|Data Files (*.dat)|*.dat|All files (*.*)|*.*"
    OpenFileDialog1.FileName = "myList"

    Try
        If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
            stockItems = _Load(OpenFileDialog1.FileName)

            For Each (stockItem As ListViewItem in stockItems)
                listClothes.Add(stockItem)
            Next

            MessageBox.Show("Your list has been uploaded successfully", "ccc!", MessageBoxButtons.OK, MessageBoxIcon.Information)
         End If
     Catch ex As Exception
         MsgBox(ex.Message)
     End Try
End Sub   

在此代码中,将选定FileName_Load方法传递方法,并将其返回值分配给局部stockItems变量。

然后,您遍历该stockItems列表,并将其中的每个添加ListViewItem到您的中clothesList

请注意,此代码很脆弱-如果输入文件中的列顺序不正确,或者缺少列,则数据将倾斜,并且如果您尝试读取该程序,则可能会崩溃数组中的一行(来自文件)不存在。当然,您也可以将该代码包装在Try Catch块中。

这仅仅是一种实现方式-我毫不怀疑还有其他方式。但这至少应该使您朝正确的方向前进。

编辑删除前导字符的最简单方法是将它们添加到拆分中,如下所示:

Lines = File.ReadAllText(FileName).Split(New String() _
             { ControlChars.CrLf, "#", "%", "&", "@$", "$*", "*$"}, _
              StringSplitOptions.RemoveEmptyEntries)

这将返回所有行的数组,减去空行和前导字符。

当然,使用上面的代码,实际上您不再需要那些前导字符,只要输入文件中的列始终具有相同的顺序即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何只读取特定字符串后的文本文件中的行?

来自分类Dev

从文本文件读取时如何比较单独行中的字符串

来自分类Dev

如何从文本文件中读取JSON字符串进行解析?

来自分类Dev

如何在从逗号分隔的文本文件读取的行中创建子字符串

来自分类Dev

如何从.INI文件中读取字符串,然后从文本文件中读取该字符串,并使用Python打印整行?

来自分类Dev

如何从文本文件中读取单词并将其添加到字符串数组中?

来自分类Dev

如何从文本文件中逐行读取并将这些字符串添加到数组中?

来自分类Dev

如何在文本文件中的包含字符串的行的末尾添加文本?

来自分类Dev

如何在C中替换文本文件中的字符串/短语

来自分类Dev

如何在JAVA中的文本文件中查找字符串

来自分类Dev

如何搜索字符串并替换文本文件中的字符串?

来自分类Dev

如何使用std :: getline()将文本文件读取为C ++中的字符串数组?

来自分类Dev

我如何解析读取所有行的文本文件中的特定字符串?

来自分类Dev

Python:如何从文本文件中读取一系列字符串作为浮点数?

来自分类Dev

如何在文本文件中获取特定字符串

来自分类Dev

如何在文本文件中grep查找包含逗号的以行分隔的字符串?

来自分类Dev

如何在文本文件中搜索字符串并根据结果执行特定操作

来自分类Dev

从VB.NET中的文本文件读取行

来自分类Dev

如何从文本文件中的python中的字符串中删除空['']

来自分类Dev

如何在 Oracle 中添加字符串并使用该字符串名称创建文本文件

来自分类Dev

如何从python中的文本文件中获取子字符串?

来自分类Dev

如何在文本文件中的某个字符串之后从python中的文本文件中提取数据?

来自分类Dev

如何从文本文件中读取VB格式的代码?

来自分类Dev

如何从文本文件中读取字符串类型(不是数字)并将数据存储在C ++中的数组中?

来自分类Dev

在文本文件中搜索字符串时如何包含空格

来自分类Dev

如何使用Java在文本文件中查找和分隔字符串值?

来自分类Dev

如何从文本文件中查找字符串并加载其行内容

来自分类Dev

如何从文本文件中的字符串中提取特定单词?C ++

来自分类Dev

如何检查文本文件中是否存在日期和字符串

Related 相关文章

  1. 1

    如何只读取特定字符串后的文本文件中的行?

  2. 2

    从文本文件读取时如何比较单独行中的字符串

  3. 3

    如何从文本文件中读取JSON字符串进行解析?

  4. 4

    如何在从逗号分隔的文本文件读取的行中创建子字符串

  5. 5

    如何从.INI文件中读取字符串,然后从文本文件中读取该字符串,并使用Python打印整行?

  6. 6

    如何从文本文件中读取单词并将其添加到字符串数组中?

  7. 7

    如何从文本文件中逐行读取并将这些字符串添加到数组中?

  8. 8

    如何在文本文件中的包含字符串的行的末尾添加文本?

  9. 9

    如何在C中替换文本文件中的字符串/短语

  10. 10

    如何在JAVA中的文本文件中查找字符串

  11. 11

    如何搜索字符串并替换文本文件中的字符串?

  12. 12

    如何使用std :: getline()将文本文件读取为C ++中的字符串数组?

  13. 13

    我如何解析读取所有行的文本文件中的特定字符串?

  14. 14

    Python:如何从文本文件中读取一系列字符串作为浮点数?

  15. 15

    如何在文本文件中获取特定字符串

  16. 16

    如何在文本文件中grep查找包含逗号的以行分隔的字符串?

  17. 17

    如何在文本文件中搜索字符串并根据结果执行特定操作

  18. 18

    从VB.NET中的文本文件读取行

  19. 19

    如何从文本文件中的python中的字符串中删除空['']

  20. 20

    如何在 Oracle 中添加字符串并使用该字符串名称创建文本文件

  21. 21

    如何从python中的文本文件中获取子字符串?

  22. 22

    如何在文本文件中的某个字符串之后从python中的文本文件中提取数据?

  23. 23

    如何从文本文件中读取VB格式的代码?

  24. 24

    如何从文本文件中读取字符串类型(不是数字)并将数据存储在C ++中的数组中?

  25. 25

    在文本文件中搜索字符串时如何包含空格

  26. 26

    如何使用Java在文本文件中查找和分隔字符串值?

  27. 27

    如何从文本文件中查找字符串并加载其行内容

  28. 28

    如何从文本文件中的字符串中提取特定单词?C ++

  29. 29

    如何检查文本文件中是否存在日期和字符串

热门标签

归档