linq - LINQ 从字符串中连续查找 3 次以上
问题描述
string x = "abcdeffffaaaasdfhfgjhfghzxxxx";
如果某个字母连续出现超过一定时间等,我如何从字符串中获取字符,如果任何字母连续出现超过 3 次,您将在集合中获得 4 个“a”元素。可以使用 LINQ 吗?
解决方案
我会选择 RegEx,但如果你真的想使用 LINQ,我会将你的字符序列分组为相同字符的组,并计算每组中的元素数。
TODO:判断 A a à à à ä 是同一个“字母”还是不同的“字母”。使用StringCompare.InvariantCultureIgnoreCase
等来克服这个问题
var CharacterCounts = sourceString // get your source string as sequence of char
.GroupBy(letter => letter // group them into groups with same letter
.Select(group => new // from every group count the number of elements
{
Char = group.Key,
Count = group.Count(),
}
要知道是否有任何字母出现超过某个数字:
bool someLettersOften = characterCounts
.Where(characterCount => characterCount.Count > 3)
.Any();
要获取所有经常出现的字母:
var oftenUsedLetters = characterCounts
.Where(characterCount => characterCount.Count > 3)
.Select(characterCount => characterCount.Character);
推荐阅读
- javascript - 如何终止 Mapbox 的 map.on() 函数?
- azure - 通过 CorrelationFilter 和 Azure Functions App 创建主题过滤器规则
- python-3.x - 在循环遍历 pandas 数据帧之前,如何找出支持哪些操作数?
- javascript - 仅在父单击而不是子单击时触发事件
- azure-cosmosdb - 如果查询 RU 成本超过限制,如何从 Microsoft Azure Cosmos DB 中删除所有边
- java - Youtube播放器自定义应用强制每次关闭
- c# - ASP Net Core 中使用 SqlConnection 的存储过程执行中的随机请求减慢
- python - 使用现有变量向数据框添加新列
- javascript - 动画风格缓动、缓动等在我的 javascript 代码中不起作用
- javascript - 在 R Shiny 中的旋钮输入显示后添加百分比符号的问题