Количество определенных строк внутри строки - PullRequest
5 голосов
/ 24 февраля 2010

Я работаю в .net c #, и у меня есть строка text = "Какой бы текст FFF вы не могли представить, FFF"; Что мне нужно, это получить количество раз, когда "FFF" появляется в тексте строки. Как я могу это сделать? Спасибо.

Ответы [ 5 ]

7 голосов
/ 24 февраля 2010

Вы можете использовать регулярные выражения для этого и прямо обо всем, что вы хотите:

string s = "Whatever text FFF you can FFF imagine";

Console.WriteLine(Regex.Matches(s, Regex.Escape("FFF")).Count);
3 голосов
/ 24 февраля 2010

Вот 2 подхода. Обратите внимание, что регулярное выражение должно использовать метасимвол границы \b, чтобы избежать неправильного сопоставления вхождений в других словах. Решения, опубликованные до сих пор, не делают этого, что неправильно посчитало бы «FFF» в «fooFFFbar» как совпадение.

string text = "Whatever text FFF you can FFF imagine fooFFFbar";

// use word boundary to avoid counting occurrences in the middle of a word
string wordToMatch = "FFF";
string pattern = @"\b" + Regex.Escape(wordToMatch) + @"\b";
int regexCount = Regex.Matches(text, pattern).Count;
Console.WriteLine(regexCount);

// split approach
int count = text.Split(' ').Count(word => word == "FFF");
Console.WriteLine(count);
0 голосов
/ 24 февраля 2010

Вот альтернатива регулярным выражениям:

string s = "Whatever text FFF you can FFF imagine FFF";
//Split be the number of non-FFF entries so we need to subtract one
int count = s.Split(new string[] { "FFF" }, StringSplitOptions.None).Count() - 1;

Вы можете легко настроить это, чтобы использовать несколько различных строк при необходимости.

0 голосов
/ 24 февраля 2010

Используйте System.Text.RegularExpressions.Regex для этого:

string p = "Whatever text FFF you can FFF imagine";
var regex = new System.Text.RegularExpressions.Regex("FFF");
var instances = r.Matches(p).Count;
// instances will now equal 2,
0 голосов
/ 24 февраля 2010
Regex.Matches(text, "FFF").Count;
...