2012-05-14 5 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 

그 임의의 줄에서 단어를 추출하는 더 좋은 방법이 있습니까?

아니요,이 경우 사용해야하는 구분 기호는 무엇이고 Office를 사용하지 않고 해당 구분 기호로 나누기를 빠르게 변경하려면 어떻게해야합니까?

또한 어떻게 textfieldparser를 사용하여 리소스에서 파일을 가져올 수 있습니까? 내가 대신 "파일 경로", 그것은 나에게 ArgumentException이 준 my.resources.filename를 사용하여 시도로 인해 "경로에 잘못된 문자"로 설정합니다.

+0

TextFieldParser를 사용하려면이 CSV와 같은 파일을 구문 분석하기위한 것입니다. rfc4180 지침을 따릅니다. (비록 당신이 구분 기호를 변경할 수 있지만 그것은 여전히 ​​crlf 줄 구분 기호에 의존합니다.) – Nicholas

답변

1

더 쉬운 방법은 문자열의 집합에 텍스트 파일을로드 File.ReadAllLines의 문자열 배열로 모든 단어를 읽어 컬렉션

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

그 코드로 가정하면, 난 그냥 "list()"변수에 대한 인덱스로 무작위 번호를 사용할 수 있습니까? – Yorrick

+0

예, 목록()의 색인이 1에서 시작하지 않아야 함 0 – Nick

+0

임의 색인 또는 실제 색인 목록을 의미합니까? 0 ~ 1519 사이의 임의 코드를 변경할 수 있기 때문에 : P – Yorrick

0

의 임의의 인덱스를 잡아 것입니다. 한 줄의 코드 :

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

는, 임의의 단어를 선택 Rnd

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