Количество определенных строк в строке

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

5
задан euther 24 February 2010 в 16:32
поделиться

5 ответов

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

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

Console.WriteLine(Regex.Matches(s, Regex.Escape("FFF")).Count);
7
ответ дан 13 December 2019 в 22:06
поделиться
Regex.Matches(text, "FFF").Count;
0
ответ дан 13 December 2019 в 22:06
поделиться

Вот два подхода. Обратите внимание, что регулярное выражение должно использовать метасимвол границы слова \ 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);
3
ответ дан 13 December 2019 в 22:06
поделиться

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

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
ответ дан 13 December 2019 в 22:06
поделиться

Используйте 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
ответ дан 13 December 2019 в 22:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: