C# 查找字符串中多次使用的短语
更新 对不起,我几乎没有英语 我想数一数字符串中的短语 我的绳子在下面 Lorem ipsumdolorsit amet,是一位杰出的献身者。纳拉 维尼纳提斯,lorem ipsumaugue vel Pellenteskue坐在阿梅特,lorem ipsum多洛·埃吉斯塔斯湖, 这是我的错 我想在下面C# 查找字符串中多次使用的短语,c#,C#,更新 对不起,我几乎没有英语 我想数一数字符串中的短语 我的绳子在下面 Lorem ipsumdolorsit amet,是一位杰出的献身者。纳拉 维尼纳提斯,lorem ipsumaugue vel Pellenteskue坐在阿梅特,lorem ipsum多洛·埃吉斯塔斯湖, 这是我的错 我想在下面 3x同侧眼线 2个坐在阿梅特 我尝试了这个链接中的函数 但我的结果如下 重复=10080x(是否正在计算空格?) 重复=99x photoshop 重复=52x德斯莱里 重复=44x p
- 3x同侧眼线
- 2个坐在阿梅特
- 重复=10080x(是否正在计算空格?)
- 重复=99x photoshop
- 重复=52x德斯莱里
- 重复=44x photoshop dersleri
- 重复=36倍photoshop文件
- 重复=44x photoshop dersleri
- 重复=36倍photoshop文件
- 重复=和其他
var splitBySpace = text2.Split(' ');
var doubleWords = splitBySpace
.Select((x, i) => new { Value = x, Index = i })
.Where(x => x.Index != splitBySpace.Length - 1)
.Select(x => x.Value + " " + splitBySpace.ElementAt(x.Index + 1));
var duplicates = doubleWords
.GroupBy(x => x)
.Where(x => x.Count() > 1)
.Select(x => new { x.Key, Count = x.Count() })
.OrderByDescending(w => w.Count);
foreach (var word in duplicates)
ensikkelimeler.Add(string.Format("{0}x {1}", word.Count, word.Key));
我对您的代码(似乎来自)进行了一些调整(我在注释中描述了更改):
以下是示例文本的结果:
3x lorem ipsum
3x ipsum dolor
2x sit amet
我还尝试了从您链接的问题中选择的答案。在我添加了对ToLowerInvariant()
的调用后,它返回了两个单词短语的相同结果,但还包括一个三个单词短语:
2x lorem ipsum dolor
3x lorem ipsum
3x ipsum dolor
2x sit amet
CountPhraseInText函数:
int CountPhraseInText(string input, string phrase)
{
return new Regex(phrase, RegexOptions.IgnoreCase).Matches(input).Count;
}
它会重复“photoshop”,尽管在原始字符串中甚至不存在???photoshop单词在我的字符串中使用了99次。但我一句话也不想说。我需要两个字。不是“photoshop”,而是“photoshop dersleri”。对不起,我刚刚意识到这是我偶然投下的否决票,现在我无法逆转,因为已经有一段时间了。你能编辑一下答案吗?这样我就可以把我的投票改为赞成票而不是反对票了?
var text = @"Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nulla venenatis, lorem ipsum augue vel pellentesque sit amet,
lorem ipsum dolor egestas lacus, et ipsum dolor nulla.";
var phrases = new string[] { "sit amet", "lorem ipsum" };
var q = phrases.Select(p => new { phrase = p, Count = CountPhraseInText(text, p) })
.OrderBy(x => x.Count);
int CountPhraseInText(string input, string phrase)
{
return new Regex(phrase, RegexOptions.IgnoreCase).Matches(input).Count;
}