我正在使用VB.NET创建一个简单的测验程序,该程序从两个CSV文件中读取问题和可能的答案,并将其显示给用户。
问题CSV文件:
Question ID, Question Text, Correct Answer
1, "Which of these are green? A: Grass B: The Ocean C: A Strawberry D: A tree leaf", A
回答CSV文件,其中包含四个与ID问题匹配的答案
Question ID, Answer A, Answer B, Answer C, Answer D
1, "A & D", "A & C, "D & B, "B & C"
我使用文本字段解析器读取我的CSV文件,并将每个问题的“问题”文本存储为字符串。因此,问题ID 1的问题文本将是"Which of these are green? A: Grass, B: The Ocean, C: A Strawberry, D: A tree leaf"
。
然后我使用标签文本属性在GUI上显示此问题文本。我的问题是,因为字符串全部在一行上,所以格式为:
“哪一个是绿色的?草海洋一个草莓一个树叶”。
我喜欢将其格式化为:
其中哪些是绿色的?
A:草
B:海洋
C:草莓D:树叶
现在显然只是在CSV文件中的所需位置添加vbNewLine只会将“vbNewLine”添加为字符串的一部分,而不是将其作为代码读取。
还有其他解决方案,我可以在CSV中添加一些内容以获得所需的格式吗?
答案 0 :(得分:0)
如果该值包含在引号中,则CSV文件可以在字段值中包含换行符和其他特殊字符。只需将换行符添加到CSV文件中,TextFieldParser
就会按预期读取它们。 E.g。
1,“其中哪一个是绿色的?
A:草
B:海洋
C:草莓D:树叶“,A
Using reader As New TextFieldParser(Path.Combine(My.Computer.FileSystem.SpecialDirectories.MyDocuments,
"Test.txt")) With {.Delimiters = {","},
.HasFieldsEnclosedInQuotes = True}
Dim fields = reader.ReadFields()
For Each field As String In fields
MessageBox.Show(field)
Next
End Using