我正在使用一个小型控制台应用程序,它返回几个0而不是实际的单词数。我在某些方面也注意到,因为我在计算空间,所以我的逻辑会有缺陷。这通常不会计算字符串中的最后一个字。有关如何修复我的代码的任何建议。感谢。
static void Main()
{
bool fileExists = false;
string filePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string file = filePath + @"\wordcount.txt";
fileExists = File.Exists(file);
if (fileExists)
{
Console.WriteLine("{0} contains the following", file);
Console.WriteLine(File.ReadAllLines(file));
foreach (char words in file)
{
int stringCount = 0;
if (words == ' ')
{
stringCount++;
}
Console.WriteLine(stringCount);
}
}
else
{
Console.WriteLine("The file does not exist, creating it");
File.Create(file);
}
Console.ReadLine();
}
我已经对它进行了编辑,以便我检查内容而不是文件路径(noob在这里使noob错误)。我仍然觉得我在foreach循环中使用if语句的逻辑虽然很糟糕。
if (fileExists)
{
Console.WriteLine("{0} contains the following", file);
string[] contents = File.ReadAllLines(file);
foreach (string words in contents)
{
int stringCount = 0;
if (words == " ")
{
stringCount++;
}
Console.WriteLine(stringCount);
}
}
答案 0 :(得分:3)
您没有阅读实际文件,而是在阅读您声明为file
的{{1}}变量。
您只是将文件内容输出到控制台。您应该将filePath + @"\wordcount.txt";
的结果分配给新变量(类型为File.ReadAllLines(file)
:http://msdn.microsoft.com/en-us/library/system.io.file.readalllines.aspx),然后运行该变量。
答案 1 :(得分:2)
String.Split和File.ReadAllText是你应该看的功能。
var count = File.ReadAllText(file).Split(' ').Count();
答案 2 :(得分:0)
如果您将文件内容读取为字符串,则可以使用此代码计算空格。您只需要在该计数中加1即可处理最后一个单词。
int count = strFileContents.Split(' ').Length - 1;
答案 3 :(得分:0)
您可以使用字符串拆分
if (fileExists)
{
Console.WriteLine("{0} contains the following", file);
Console.WriteLine(File.ReadAllLines(file));
var fileContent=File.ReadAllText();
stringCount=fileContent.Split(new [] {' ','\n'},StringSplitOptions.RemoveEmptyEntries).Length;
}
答案 4 :(得分:0)
if (fileExists)
{
string fileString = File.ReadAllText(file);
var words = fileString.Split(' ');
int strCount = words.Count();
}
将文件读取为字符串,用空格分割,计算数组中的项目数。
答案 5 :(得分:0)
我认为这应符合您的格式:
List<string> allWords = new List<string>();
foreach (string words in file)
{
allWords += words;
}
int wordCount = allWords.Length();
虽然,我认为@AlexeiLevenkov还是更好......
答案 6 :(得分:0)
Regex.Matches(File.ReadAllText(file), @"[\S]+").Count;