У меня есть небольшое консольное приложение, над которым я работаю, и оно возвращает несколько 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 ошибки). Я все еще чувствую, что моя логика с утверждением if внутри цикла foreach плохая.
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);
}
}
Вы должны прочитать документацию [File.ReadAllLines] (http://msdn.microsoft.com/en-us/library/system.io.file.readalllines.aspx) (там также есть пример кода). –
вы foreach против файла, который является файловым путем. – Jonesopolis
Есть так много ошибок в этом коде, я не знаю, с чего начать! –