Я работаю в .net c#, и у меня есть строковый текст = "Безотносительно текста FFF, который Вы можете FFF воображать"; То, в чем я нуждаюсь, должно получить количество времен, "FFF" появляется в строковом тексте. Как может, я выполнил это?Спасибо.
Вы можете использовать регулярные выражения для этого и прямо обо всем, что захотите:
string s = "Whatever text FFF you can FFF imagine";
Console.WriteLine(Regex.Matches(s, Regex.Escape("FFF")).Count);
Вот два подхода. Обратите внимание, что регулярное выражение должно использовать метасимвол границы слова \ 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);
Вот альтернатива регулярным выражениям:
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;
Вы можете легко настроить это, чтобы при необходимости использовать несколько разных строк.
Используйте 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,