如何逐行将文本文件转换为Visual Basic 2008中的数组?

时间:2015-01-11 23:06:39

标签: arrays vb.net visual-studio-2008 text-files

我是Visual Basic的新手,我正试图进入文件阅读。从我在网上找到的东西中我找不到任何让我感到困惑的东西。

我正在尝试制作一个简单的游戏来测试一些对话的东西,我想要你可以说预定的选项。现在我在数组中有几个句子,但我真正想要做的就是在每行上输入一个不同项目的文本文件,然后将每一行转换为数组的单独项目。

我现在拥有的是:

Dim convoStarters() As String = {"Hello", "Who are you?", "Who the hell are you?"}

我想要做的是从如此组织的文本文件中获取信息:

Hello
Who are you?
Who the hell are you?

并将每一行放入一个看起来与我上面完全相同的数组(当然,除了我在文本文件中添加更多内容之外)。

感谢你帮助一个新人,祝你有个美好的一天。

2 个答案:

答案 0 :(得分:1)

首先,你必须找出你的阵列需要多少元素。

通过计算'","'的数量+ 1你有你的字符串中存在的元素数量。

请查看instr(),mid(),left(),rtrim(),ltrim()等字符串方法。

根据您找到的元素数量,您可以使用REDIM数组或REDIM PRESERVER数组

为您的示例REDIM strArr(nrElements)或者如果您需要添加一些元素 丢失内容使用REDIM PRESERVE strArr(nrElements)。

然后你可以填写: for x = LBound(strArr,1)到Ubound(strArr,1)        strArr(x)= Stringpart(x) 下一个x

始终打开您的"直接窗口"在菜单中的VBA编辑器"查看"并使用debupg.print strArr(x)

答案 1 :(得分:0)

假设您的意思是VB.NET而不是VBA(对于Visual Studio的标记以及开发游戏的目的),您可以使用StreamReader逐行读取文件并添加元素到了字符串然后:

VB.NET解决方案

注意:如果您还没有,要与任何文件(输入或输出)进行交互,您需要导入系统的IO,这意味着在您的代码之上说明:

Imports System.IO

...则...

GLOBAL VARIABLES(在模块之上,任何子/函数之外)

Dim myStringElements As Integer
Dim convoStarters() As String

SUB CODE     Public Sub yourSub()     myStringElements = 0     Dim sr As StreamReader = New StreamReader(path)'此对象将读取文本文件

Do While sr.Peek() >= 0 'this will loop through the lines until the end
    AddElementToStringArray(sr.ReadLine()) 'this will add the single line to the string array
Loop
sr.Close()
End Sub

PUBLIC FUNCTION BODY(制作添加作业的另一个子)

Public Sub AddElementToStringArray(ByVal stringToAdd As String)
    ReDim Preserve convoStarters(myStringElements)
    convoStarters(myStringElements) = stringToAdd
    myStringElements += 1
End Sub

VBA解决方案

但是,如果你的评论中你更喜欢VBA,那么逻辑是相同的但语法略有不同:

GLOBAL VARIABLES

Dim myStringElements As Integer
Dim convoStarters() As String

SUB CODE

    myStringElements = 0
    Open "C:\Users\Matteo\Desktop\Test.txt" For Input As #1

    While Not EOF(1)
        Line Input #1, DataLine ' read in data 1 line at a time
        AddElementToStringArray (DataLine) 'this will add the single line to the string array
    Wend

公共职能部门

Public Sub AddElementToStringArray(ByVal stringToAdd As String)
    ReDim Preserve convoStarters(myStringElements)
    convoStarters(myStringElements) = stringToAdd
    myStringElements += 1
End Sub