使用c#在字符串中查找子字符串的最佳方法是什么?

时间:2013-11-01 06:41:01

标签: c# substring frequency

我试图在字符串中找到一个单词,意思是

如果abcdef ghijk是一个字符串,则子串ghijk应该给我们1作为频率。 但如果substring为cde,则应返回0。

我希望Regex可以实现这一点,但我不知道是不是。或者可能是字符串类中有一个方法。

3 个答案:

答案 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();

它将给出频率否则为零。