【问题标题】:Can someone help me with writing to a file using a specific format有人可以帮助我使用特定格式写入文件吗
【发布时间】:2015-11-11 00:17:59
【问题描述】:

嘿,有人可以在写入文件时帮助我解决格式问题。我创建了一个名为 car 的公共类,然后我使用该类创建了一个变量,并存储了三个东西,名称、车牌和汽车类型(这些都不重要),无论如何,当我写入文件时,它将这三个东西中的每一个都放在同一行,没有空格,有人可以告诉我如何将这三个东西放在一个单独的行上(所以第一行是名字,第二行是盘子,第三行是打字)谢谢

Private Sub btnSubmit_Click(sender As System.Object, e As System.EventArgs) 处理 btnSubmit.Click 像汽车一样昏暗的汽车

    If rdbGuest.Checked Then
        strType = rdbGuest.Text
    Else
        strType = rdbTreasury.Text
    End If


    Car = New Car(txtName.Text, txtPlate.Text, strType)

    Dim Write As StreamWriter
    Write = My.Computer.FileSystem.OpenTextFileWriter("record.txt", True)
    Write.WriteLine(Car.getFileLine())
    Write.Close()

End Sub

结束类

【问题讨论】:

    标签: format writing


    【解决方案1】:

    这取决于 Car 中的数据表示形式和 getFileLine() 方法的样子。

    假设 Car 初始化的数据存储在三个不同的字符串中(我的建议),您可以创建 getName()getPlate()getType() 方法并使用 Write.WriteLine() 单独写入它们的值。 (或者创建一个Car.printData(writer as StreamWriter) 方法)

    如果您坚持将它们放在同一个字符串中,您可能必须使用 split() 之类的方法拆分数据以单独打印数据。

    或者您也可以使用Car(txtName.Text & Chr(13) & Chr(10), txtPlate.Text & Chr(13) & Chr(10), strType) 之类的东西在初始化时快速而肮脏地添加换行符。但因此有些代码会很高兴看到。

    【讨论】:

    • 是的,谢谢,但我使用了 nitro2 的代码,因为它在我必须添加的数量方面更有效
    • 好吧,现在这可以工作了,但是只有当一个用户输入他们的详细信息时,我才能做到这一点,所以当另一个用户输入他们的汽车详细信息时,它会用星号写入文本文件(*** **) 表示每个细节之间的刹车?
    • 是的,vbCrLf 基本一样。你想处理多个用户?然后你会创建一个数组或汽车列表。使用 for 循环,您将遍历 Cars 数组,对于每辆 Car,您将写入 getFileLine() 的结果加上额外的星号。 For i = 0 To numberOfCars Write.WriteLine(Car(i).getFileLine() & vbCrLf & "******" & vbCrLf) Next i
    • 好吧,但我必须使用堆栈,所以基本上这个程序允许用户停放他们的汽车,这是一种形式,他们在这里输入他们的详细信息,然后还有另一种形式,他们通过输入来取回他们的汽车一个车牌,所以当他们想要停车时堆栈必须推车,当他们想要取回时弹出,所以如果我想制作一个堆栈,那么制作一个数组会有用吗?
    • 每个数据结构都有它的优点和缺点。例如,堆栈的顺序是有限的。如果您总是希望弹出最近推送的汽车,则可以使用堆栈。如果您想指定要乘坐哪辆车,列表会更好地匹配。无论如何,如果在您的任务描述中请求堆栈,您应该使用堆栈。你可以找到example class for a stack here
    【解决方案2】:

    你为什么不用你的 3 个单独的值写 3 Write.WriteLine

    【讨论】:

    • 因为这三个值在同一个变量下,所以当我写行时,我只使用变量而不是三个值中的每一个
    • 你能创建 3 个函数 Car.getName(), Car.getType, Car.getPlate() 吗?
    • 我可以,但是有没有更简单的方法使用我目前的代码?
    • 那么“getFileLine()”里面是什么?您可以使用 vbCrLF(它是 \r\n)来写新行。例如:public getFileLine {Get return Plate & vbCrLF & Type & vbCrLF & Name End Get}
    • 公共函数 getFileLine() As String Dim myLine As String myLine = strName + strPlate + strType Return myLine End Function
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 2016-07-07
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    相关资源
    最近更新 更多