2014-10-26 3 views
1

Я новичок в .NET Я хочу, чтобы моя программа читала текст из документа, содержала каждую строку в массиве и затем разбивала каждое слово с помощью регулярного выражения. В консоли я вижу: «system» «string» Почему я не вижу слова из текстового файла?Чтение текста из файла и разбор

Я пытаюсь создать конкорданс, поэтому мне нужно знать, сколько раз каждое слово появляется в тексте и количестве строк, где каждое слово. Чтобы сделать это, я решил прочитать каждую строку, но не весь текст Это мой код:

string lines =File.ReadAllLines(path: @"C:\Users\Влад\Documents\Task1\ConcordanceApplication\Text.txt").ToString(); 
    string[] words = SplitWords(lines); 
     foreach (var word in words) 
     { 
      Console.WriteLine(word); 
     } 
    static string[] SplitWords(string s) 
     { 
      return Regex.Split(s, @"\W+"); 
     } 
+0

Вы на самом деле не сказали нам, что случилось. Что оно делает? Что вы ожидаете от этого? «Это не работает» - это не проблема, а вопрос. – BradleyDotNET

+0

Также, пожалуйста, улучшите свой титул. Ваше текущее название вопроса может быть применено практически к каждому вопросу. –

ответ

2

Здесь вы идете:

internal class Program 
{ 
    private static void Main(string[] args) 
    { 
     string lines = File.ReadAllText(path: @"readme.txt"); 
     string[] words = SplitWords(lines); 
     foreach (var word in words) 
     { 
      Console.WriteLine(word); 
     } 
    } 

    private static string[] SplitWords(string s) 
    { 
     return Regex.Split(s, @"\W+"); 
    } 
} 

В основном используют ReadAllText вместо ReadAllLines.

3

Проблема заключается в том, что вы вызываете в первой строке string[].ToString(). File.ReadAllLines возвращает массив; если вы вызываете ToString(), вы получите текст System.String[] или что-то в этом роде.

Попробуйте вместо этого:

string text =File.ReadAllText(path: @"C:\Users\Влад\Documents\Task1\ConcordanceApplication\Text.txt"); 
string[] words = SplitWords(text); 
0

'File.ReadAllLines' возвращает массив строк, а не строку. Рабочий раствор:

 string lines; 
     using (var strReader = new StreamReader(@"C:\Users\Влад\Documents\Task1\ConcordanceApplication\Text.txt")) 
     { 
      lines = strReader.ReadToEnd(); 
      strReader.Close(); 
     } 
     string[] words = SplitWords(lines); 
     foreach (var word in words) 
      Console.WriteLine(word); 
Смежные вопросы