我试图在字符串中找到一个单词,意思是
如果abcdef ghijk
是一个字符串,则子串ghijk
应该给我们1作为频率。
但如果substring为cde
,则应返回0。
我希望Regex可以实现这一点,但我不知道是不是。或者可能是字符串类中有一个方法。
答案 0 :(得分:5)
如果你想要单词频率,你可以创建单词频率。像这样的字典:
s.Split().GroupBy(x => x).ToDictionary(x => x.Key, x => x.Count())
然后检查这本词典中的单词。
var s = "abcdef ghijk abcdef";
var d = s.Split().GroupBy(x => x).ToDictionary(x => x.Key, x => x.Count())
// Dictionary<string, int>(2) { { "abcdef", 2 }, { "ghijk", 1 } }
答案 1 :(得分:4)
听起来你只想在字符串中找到整个单词。这可以使用\b
的正则表达式来完成,这意味着“单词边界”。例如:
var input = "abcdef ghijk";
var freq1 = Regex.Matches(input, @"\bghijk\b").Count;
Console.WriteLine(freq1); // 1
var freq2 = Regex.Matches(input, @"\bcde\b").Count;
Console.WriteLine(freq2); // 0
这也会考虑逗号和句号等标点符号。
答案 2 :(得分:1)
试试这个:
int frequency = YourString.Split().Where(a => a == subString).Count();
它将给出频率否则为零。