c# - 如何在字符串中找到模式?
问题描述
所以想象一下你有这样的字符串
o7o7o7o7o7o
我的方法有一个明确的模式o7o
是在第一个之后找到第二个o
,这就是模式,然后看看它是否匹配。
字符串是,我如何获得第二个的索引o
?
我试过这个
var pattern = "o7o7o7o7o7o";
var index = input.IndexOf("*");
但这显然会得到o
它找到的第一个索引,我想得到第二个。我怎么做?
解决方案
您可以通过多种方式执行此操作,最快的方法是循环:
string pattern = "o7o7o7o7o7o";
int count = 0;
int index = 0;
while(index < pattern.Length)
{
if(pattern[index] == 'o') count++;
if(count == 2) break;
index++;
}
index
这就是你想要的。
林克:
int index = pattern.Select((x, i) => new { x, i })
.Where(a => a.x == 'o').Skip(1)
.FirstOrDefault().i;
string.IndexOf():
int count = 0, index = 0;
do
{
index = pattern.IndexOf('o', index);
if (index != -1) { count++; index++; }
} while (index != -1 && count < 2);
还有很多其他的方法,但我认为上面的三个例子会很好,因为我想到的其他方法比较慢(至少我能想到的)。
推荐阅读
- javascript - 在不同的屏幕尺寸上重新排序 DOM 元素
- node.js - 发生异常:TypeError TypeError:connection.queryRaw 不是函数
- python - 无法在 Mac (Python) 上安装 matplotlib
- cakephp - 将列中的值与数字进行比较时出现问题
- javascript - 如何从 JSON 响应动态填充 div
- excel - Excel - 自上次 B 列为“是”以来,使用 C 列对 A 列中的所有值求和
- c# - 在 C# 中使用 Selenium 将 PDF 内容下载到字符串中
- python - 从 15,000 个文件(从 Storage 到 BQ)创建表的最有效方法
- php - Laravel:反转分页查询的结果
- php - 为什么此代码不允许上传音频文件?