Рейтинг:
5
Maciej Los
Пожалуйста, прочтите мой комментарий к этому вопросу.
Ты должен Расщеплять[^] строка на пробелах, например:
string address = "Please write any Sentence";
string filter = "any";
int counter = address.Split(new string[]{" "}, StringSplitOptions.RemoveEmptyEntries).Count(x=>x==filter);
Console.WriteLine("{0}", counter);
[РЕДАКТИРОВАТЬ]
Я забыл упомянуть о верхних/нижних буквах! Обратите внимание на это сравнение: (
"any"=="Any"
) вернет
false
.
Я бы настоятельно рекомендовал прочитать это:
Как сравнить строки (руководство по программированию на C#) | Microsoft Docs[
^]
Строка.Метод Сравнения (String, String, Boolean) (System)[
^]
Удачи вам!
[Правка #2]
Из-за комментариев OP, вот полный пример:
void Main()
{
string path = @"D:\data.txt";
string find = "any";
string[] lines = File.ReadAllLines(path);
int cTotal = 0;
foreach(string line in lines)
{
cTotal += Counter(line, find);
}
Console.WriteLine("A '{0}' has been found {1} time", find, cTotal);
}
// Define other methods and classes here
public static int Counter(string line, string findword)
{
int c= 0;
string[] words = line.Split(new string[]{" "}, StringSplitOptions.RemoveEmptyEntries);
foreach(string word in words)
{
if (string.Compare(word, findword, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.CompareOptions.IgnoreCase)==0)
{
c++;
}
}
return c
}
Больше:
Файл.Метод ReadAllLines (Строка) (System.IO)[
^]
Suren97
можете ли вы сказать еще один вариант без StringSplitOptions.RemoveEmptyEntries).Подсчет(x=>x==фильтр)?
более легкий вариант?
Maciej Los
Метод Split возвращает массив слов:
string[] words = address.Split(new string[]{" "}, StringSplitOptions.RemoveEmptyEntries)
Вы должны выполнить цикл по массиву, сравнить Слово и вернуть количество равных слов.
Suren97
мне кажется, ты меня не понимаешь.вот мой адрес.
строковый адрес = "C:/Users/User/Desktop/data.txt в этом файле есть написанное предложение "пожалуйста, напишите любое предложение".Теперь я должен создать функцию,которая имеет 2 параметра счетчика(строковый адрес, строковое слово).Когда я вызову эту функцию в Main` Counter(address,"write"),она должна вывести 1, если вместо "write" я пишу "kvbkdfb", то она должна вывести 0.Как я могу написать эту функцию?
Maciej Los
Я вас очень хорошо понимаю, но вы не понимаете того, что я пытаюсь вам сказать...
Suren97
как я могу использовать его в функции?
Maciej Los
Пожалуйста, проверьте обновленное решение (после [EDIT #2])
Suren97
вы делаете это сложнее, в основном я должен вызывать только эту функцию Counter(path,"any")
Suren97
и без глобализации
Maciej Los
Это твоя работа, а не моя. Я дал вам рабочее решение. Вы должны изменить его в соответствии с вашими потребностями!
Suren97
хорошо, большое вам спасибо :)
Maciej Los
Всегда пожалуйста. Пожалуйста, примите мой ответ как решение (зеленая кнопка).