0

因此,我的老师希望全班在文件中搜索作者姓名,并将该作者的所有信息显示在一个文本框中,如邮寄标签。

这是我的代码,我在下面添加了一张图片。对于让程序获取作者字符串并搜索另一个文件,我真的很迷茫。我可以完美地显示作者姓名,但是您如何在另一个文件中搜索该姓名并在该行上显示有关作者的信息?

Imports System.IO

Public Class Form1
'   CSCI 6
'   Alex Smutny
'   Lab #3
'
' DATE: 3/1/2013

Dim SR As IO.StreamReader

'   initial start spot for the record Count 
Dim RecordCount As Integer = 0
Dim Author As String = File.ReadAllText("Authors.txt")



Private Sub btnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles quitBtn.Click
    '   Properly Exits the application.

    Me.Close()
End Sub

Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles closeBtn.Click
    readBtn.Text = "Read"
    SR.Close()

    '   Changes the button statuses Locked or unlocked and sets default settings.
    openBtn.Enabled = True
    quitBtn.Enabled = True
    readBtn.Enabled = False
    closeBtn.Enabled = False
    SearBtn.Enabled = False

    RecordCount = 0

    recordNum.Clear()
    bookNum.Clear()
    isbnNum.Clear()
    bookTitle.Clear()
    authorName.Clear()
    bookPrice.Clear()
    bookQuanity.Clear()
    reorderPoint.Clear()

End Sub

Private Sub btnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles openBtn.Click
    '   Sets the file to read from and opens it.
    SR = IO.File.OpenText("Books.Txt")

    '   Changes the status of the buttons again now that the File is open and ready to read.

    openBtn.Enabled = False
    quitBtn.Enabled = False
    readBtn.Enabled = True
    closeBtn.Enabled = True
    SearBtn.Enabled = True

End Sub

Private Sub btnRead_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles readBtn.Click
    'Changes the Read button to say next because it makes more since.
    readBtn.Text = "Next"
    '   Setting all the variables.
    Dim srIndex1 As Integer = 18
    Dim srTitle As Integer
    Dim srAuthor As Integer
    Dim srPrice As Integer
    Dim srDPrice As Double
    Dim srData As String
    Dim srLength As Integer


    If SR.Peek() = -1 Then
        MessageBox.Show("End of file")
    Else
        '   Starts to read
        srData = SR.ReadLine

        '   Increment counter by 1.
        RecordCount = RecordCount + 1

        '   Determine the record length.
        srLength = srData.Length

        '   gets the book number
        bookNum.Text = srData.Substring(0, 3)

        '   ISBN number
        isbnNum.Text = srData.Substring(4, 13)

        '   Book title
        For srTitle = 1 To srLength Step 1
            If srData.Substring(srIndex1 + srTitle, 1) = "," Then
                bookTitle.Text = srData.Substring(srIndex1, srTitle)
                srIndex1 = srIndex1 + srTitle + 1
                srTitle = srLength + 1
            End If
        Next

        '   Book Author
        For srAuthor = 1 To srLength Step 1
            If srData.Substring(srIndex1 + srAuthor, 1) = "," Then
                authorName.Text = srData.Substring(srIndex1, srAuthor)
                srIndex1 = srIndex1 + srAuthor + 1
                srAuthor = srLength + 1
                Author = authorName.Text
            End If
        Next

        '   Book Price
        For srPrice = 1 To srLength Step 1
            If srData.Substring(srIndex1 + srPrice, 1) = "," Then
                srDPrice = CDbl(srData.Substring(srIndex1, srPrice))
                bookPrice.Text = srDPrice.ToString("C")
                srIndex1 = srIndex1 + srPrice + 1
                srPrice = srLength + 1
            End If
        Next

        '   Quanity
        bookQuanity.Text = srData.Substring(srIndex1, 2)
        srIndex1 = srIndex1 + 3

        '   Reorder Point
        reorderPoint.Text = srData.Substring(srIndex1, 2)

    End If

    '   record count
    recordNum.Text = RecordCount

End Sub



Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    openBtn.Enabled = True
    quitBtn.Enabled = True
    readBtn.Enabled = False
    closeBtn.Enabled = False
    SearBtn.Enabled = False


End Sub

Private Sub SearBtn_Click(sender As System.Object, e As System.EventArgs) Handles SearBtn.Click
    SR = IO.File.OpenText("Authors.Txt")

    SR.Close()
    readBtn.Text = "Restart"
    RecordCount = 0
    SR = IO.File.OpenText("Books.Txt")
End Sub

结束类

程序

作者档案http://pastebin.com/t7C8ye9e 书籍档案http://pastebin.com/y6DNyUFd

所以我的目标是只获取当前作者的信息,然后从另一个文件中获取它并取出所有尾随空格并将其显示为邮寄标签。

4

1 回答 1

1

有多种好方法可以做到这一点。现在,让我们假设每行有一个作者。如果有,您可以获取整个字符串My.Computer.FileSystem.ReadAllText()并使用String.Split(Environment.NewLine)它在每个新行上拆分它。无论如何,您需要有某种方法来分隔列表中的每个作者。String.Split返回一个字符串对象数组。然后,您可以遍历数组以确定某个词是否与搜索匹配。这是 for 循环的示例。

'... search term given in param

'... after loading text file
Dim StrArr() As String

StrArr = AuthorsString.Split(Environment.NewLine)
Dim i as Integer

For i=0 to StrArr.Length - 1 Step 1

If StrArr(i).toLower = SearchTerm.toLower Then

'String is a match! Case insensitivity should make it a little easier for     the user.

End If

Next

如果您有任何问题,请告诉我。

于 2013-12-11T17:19:44.570 回答