2014-10-26 33 views
1

我是.NET新手 我希望我的程序從doc讀取文本,將每個字符串保存在數組中,然後使用正則表達式分割每個單詞。在控制檯中,我看到: 「系統」 「字符串」 爲什麼我沒有看到文本文件中的單詞?從文件和解析中讀取文本

我嘗試創建一致性,所以我需要知道每個單詞出現在文本中的次數和每個單詞的字符串數量。要做到這一點,我決定讀每一行,但不是所有的文字 這是我的代碼:

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 2014-10-26 19:36:55

+0

另外,請改善您的標題。您目前的問題標題可以應用於幾乎所有問題。 – 2014-10-26 19:41:14

回答

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+"); 
    } 
} 

基本上使用的,而不是ReadAllLines ReadAllText。

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'返回字符串數組而不是字符串。 Working solution:

 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);