Мой цикл игнорирует некоторые совпадающие значения при чтении из txtfile. То, что я пытаюсь сделать, это мгновенно читать из файла при загрузке из моего представления.Но прежде чем вернуть его в представление, мне нужно найти наиболее часто используемое слово в txtfile и манипулировать им.
Пожалуйста, имейте в виду, что я новичок в C #, поэтому я полагаю, что мой код не симпатичен!
[HttpPost]
public IActionResult UploadFile(IFormFile file)
{
var result = string.Empty;
using (var reader = new StreamReader(file.OpenReadStream()))
{
result = reader.ReadToEnd();
}
List<string> fileContent = string.IsNullOrEmpty(result)
? null
: result.Split(' ', '.', ',', ';', '\\').ToList();
return View("../Home/Index", findMostUsedWord(fileContent));
}
public string findMostUsedWord(List<string> fileContent)
{
fileContent = fileContent.Where(str => !string.IsNullOrWhiteSpace(str)).ToList();
fileContent = fileContent.Where(str => !string.IsNullOrEmpty(str)).ToList();
fileContent = fileContent.Where(str => str.Length >= 4).ToList();
var mostUsedWord = fileContent.GroupBy(item => item).OrderByDescending(g => g.Count()).Select(g => g.Key).First();
return processMostUsedWord(mostUsedWord, fileContent);
}
public string processMostUsedWord(string mostUsedWord, List<string> fileContent)
{
int wordCount = 0;
for (int i = 0; i < fileContent.Count(); i++)
{
Debug.WriteLine(fileContent[i].ToLowerInvariant());
if (fileContent[i].ToLowerInvariant() == mostUsedWord.ToLowerInvariant())
{
fileContent[i] = "foo" + fileContent[i] + "bar";
Debug.WriteLine("FOUND MATCH");
wordCount++;
}
}
ViewData["mostUsedWord"] = "The most common word is " + mostUsedWord + " and it appears " + wordCount + " times";
return prettyPrint(fileContent);
}
public string prettyPrint(List<string> fileContent)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < fileContent.Count(); i++)
{
sb.Append(fileContent[i] + " ");
}
return sb.ToString();
}
Я знаю, что ожидаемый результат должен быть 88, но я получаю только 73 совпадения
Есть мысли?