2

我正在尝试在字符串中找到一个单词,这意味着

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

我希望使用正则表达式可以做到这一点,但我不知道是否可以。或者可能在字符串类中有一个方法。

4

3 回答 3

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 } }
于 2013-11-01T06:45:04.710 回答
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

这还将考虑逗号和句点等标点符号。

于 2013-11-01T06:45:55.443 回答
1

尝试这个:

int frequency = YourString.Split().Where(a => a == subString).Count();

否则它将给出频率为零。

于 2013-11-01T06:49:53.900 回答