2012-05-14 49 views
0

我目前很忙編碼VB.NET一個劊子手遊戲。 作爲一個單詞表,我有一個文本文件包含1520個單詞,每個單獨由一個新行...Textfieldparser符

我能想到得到一個隨機單詞的最佳方法是使用Randomize()函數。 然後從隨機生成的行#中獲取單詞。

才發現剛纔,這個方法:

Using parser As New Microsoft.VisualBasic.FileIO.TextFieldParser_ 
("filepath") 
     parser.TextFieldType = FileIO.FieldType.Delimited 

不允許我使用一個新行作爲分隔符...

考慮到所有詞有不同的長度/寬度,我不能使用這個:

parser.TextFieldType = FileIO.FieldType.FixedWidth 

有沒有更好的方法來從那個隨機行中提取單詞?

如果不是這樣,這將是我應該使用這一點,我如何迅速改變斷裂線成新的分隔符,而不訴諸辦公室分隔符?

另外,我該如何使用使用TextFieldParser擺脫資源文件? 當我嘗試使用 my.resources.filename 而不是「文件路徑」,它給了我一個ArgumentException由於「路徑無效字符」。

+0

TextFieldParser是爲了解析CSV樣的文件。它遵循rfc4180指南。 (雖然你可以改變分隔符,它仍然依賴於CRLF行分隔符) – Nicholas

回答

1

更簡單的方法是將您的文本文件加載到一個字符串集合,然後抓住收集

Dim list As New List(Of String) 
Dim Reader As New StreamReader("C:\WordList.txt") 
Dim line As String 

Do 
    line = Reader.ReadLine() 
    list.Add(line) 
Loop Until line Is Nothing 

Reader.Close() 
+0

我與該代碼假設,我可以只使用隨機數爲指標的「名單()」變量? – Yorrick

+0

是,並確保對列表中的索引()應該是1不是0 – Nick

+0

你的意思是隨機指數和實際指數名單開始?因爲我可以將隨機代碼更改爲0和1519之間:P – Yorrick

0

的隨機指數閱讀所有的話轉換成字符串數組File.ReadAllLines。一行代碼:

Dim words() As String = File.ReadAllLines(path) 

要選擇一個隨機單詞,使用Rnd

Randomize() 
Dim randomWord As String = words(CInt(Math.Floor(Rnd * words.Length))) 
相關問題