2014-12-17 3 views
-4

Не могли бы вы объяснить мне, как я могу просто найти количество раз, когда определенная строка встречается внутри большой строки? Пример:Подсчитайте слово внутри длинной строки в C#

string longString = "hello1 hello2 hello546 helloasdf"; 

слово "привет" есть в четыре раза. как я могу получить номер четыре. Благодаря

EDIT: Я хотел бы знать, как я найти строку два слова, а, например:

string longString = "hello there hello2 hello4 helloas hello there"; 

Я хочу знать число вхождений «привет».

EDIT 2: метод regex был лучшим для меня (с подсчетами), но не нашел такого слова, например: «> слово <». Так или иначе, если я хочу найти слово, содержащее «<>», он пропускает его. Помогите?

+6

http://xkcd.com/208/ – Aron

+1

Таким образом, вы должны сравнить «слово», а также «частичное слово», но то, что вы пробовали? – Habib

+0

http://stackoverflow.com/questions/541954/how-would-you-count-occurrences-of-a-string-within-a-string – Carl

ответ

1
string longString = "hello1 hello2 hello546 helloasdf"; 
var regex = new Regex("hello"); 

var matches = regex.Matches(longString); 
Console.WriteLine(matches.Count); 
+0

Привет, это был лучший способ для но, когда мне нужно слово, содержащее «> слово <», оно не находит его, когда оно существует. он пропускает <> пожалуйста, помогите. спасибо – Shakshuka

1

просто использовать string.Split() и подсчитывать результаты:

string wordToFind = "hello"; 

string longString = "hello1 hello2 hello546 helloasdf"; 
int occurences = longString 
        .Split(new []{wordToFind}, StringSplitOptions.None) 
        .Count() - 1; 

//occurences = 4 

ответить правку, просто изменить wordToFind к hello there

0

сделать это с помощью LINQ:

int count = 
    longString.Split(' ') 
    .Count(str => str 
    .Contains("hello", StringComparison.InvariantCultureIgnoreCase)); 

только предположение состоит в том, что ваш longString ограничен пробелом.

0

Вы также можете использовать Linq для этого.

string longString = "hello1 hello2 hello546 helloasdf"; 
string target = "hello"; 
var count = longString.Split(' ').ToList<string>().Count(w => w.Contains(target)); 
Console.WriteLine(count); 
Смежные вопросы