2016-11-25 4 views
-1

У меня есть программа, которая читает слова из текстового файла. Мой код работает отлично, но почему он только читает 1 слово?Чтение слов из текстового файла

Код:

Public Function ReadFile1() As String 
    Dim text = IO.File.ReadAllText("APStringFile\file.txt") 
    ' Counting words 
    Dim words = text.Split(" "c) 
    Dim wordCount As String 
    Dim Hasil As String 
    Dim FileStart As Integer = 0 
    Dim FileEnd As Integer = 100 

    For i As Integer = FileStart To FileEnd 
     wordCount = words(i) 
     'Hasil = wordCount(i) 
    Next i 
    Return wordCount 
End Function 

Я хочу прочитать слова от 0 до 100. Но результат только для чтения слов в 100 кол так:

enter image description here

Может кто-нибудь мне помочь решить мою проблему?

+0

ли вы тусклый массив строк? вы хотите сделать что-то с каждой из строк? Почему цикл, так как слова массива уже содержат слова? –

+0

, потому что я хочу прочитать слово с конкретным счетчиком, например, от 0 до 100 сэр. –

+0

Если вы просто хотите прочитать первые 100 слов, вам не нужна эта петля вообще. Linq - ваш друг: 'wordCount = words.Take (FileEnd)' –

ответ

-1

Вы можете упростить код с LINQ's Skip и Take: использование

Public Function ReadFile1(FileStart As Integer, FileEnd As Integer) As String 
    Dim text = IO.File.ReadAllText("APStringFile\file.txt") 

    ' Counting words 
    Dim words = text.Split(" "c) 

    'Skip the first n words then take m words 
    'where n = FileStart (e.g. 0) and m = delta between FileEnd (e.g. 100) and FileStart. 
    'Concat the result together to one string 
    Dim wordCount As String = String.Join(" ", words.Skip(FileStart).Take(FileEnd - FileStart).ToArray()) 

    Return wordCount 
End Function 

Пример:

Console.WriteLine(ReadFile1(0, 100)) 'Prints words 0 to 100 
Console.WriteLine("---------") 
Console.WriteLine(ReadFile1(101, 200)) 'Prints words 101 to 200 

(я настроил функцию ReadFile1 так она принимает FileStart и FileEnd в качестве параметров. Это делает использование немного более динамичным. Если вам не нужно/нужно, просто удалите их и добавьте их в качестве локальных переменных, как раньше).

Редактировать: Явная строка декларации wordCount переменной
Eidt2: Добавлен ToArray() благодаря .NET 3.5

+0

получил ошибку sir http://prntscr.com/dbkxdk –

+0

отлично работает для меня. Какую версию .NET вы используете? –

+0

Я использую Visual Studio Enterprise 2015 и .NET 3.5 –

Смежные вопросы