小编典典

您将如何计算字符串中字符串(实际上是字符)的出现次数?

all

我正在做一些事情,我意识到我想计算/我可以在一个字符串中找到多少个 s,然后它让我震惊,有几种方法可以做到这一点,但无法决定最好(或最简单)是什么.

目前我正在使用类似的东西:

string source = "/once/upon/a/time/";
int count = source.Length - source.Replace("/", "").Length;

但我一点也不喜欢,有没有人?

我真的不想为此挖掘RegEx,是吗?

我知道我的字符串将包含我正在搜索的术语,因此您可以假设…

当然对于 长度 > 1*的字符串 *

string haystack = "/once/upon/a/time";
string needle = "/";
int needleCount = ( haystack.Length - haystack.Replace(needle,"").Length ) / needle.Length;

阅读 96

收藏
2022-02-28

共1个答案

小编典典

如果您使用的是 .NET 3.5,您可以使用 LINQ 在单行中执行此操作:

int count = source.Count(f => f == '/');

如果你不想使用 LINQ,你可以这样做:

int count = source.Split('/').Length - 1;

您可能会惊讶地发现,您的原始技术似乎比这两种方法中的任何一种都快 30%!我刚刚用“/once/on/a/time/”做了一个快速基准测试,结果如下:

您原来的 = 12s source.Count
= 19s
source.Split = 17s
foreach (来自 bobwienholt 的回答)=
10s

(时间是 50,000,000 次迭代,因此您不太可能注意到现实世界中的太大差异。)

2022-02-28