我是.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 :(得分:3)
问题是你在第一行调用了string[].ToString()
。 File.ReadAllLines
返回一个数组;如果您致电ToString()
,则会收到System.String[]
或类似的内容。
请改为尝试:
string text =File.ReadAllText(path: @"C:\Users\Влад\Documents\Task1\ConcordanceApplication\Text.txt");
string[] words = SplitWords(text);
答案 1 :(得分: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。
答案 2 :(得分: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);