猿问

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

我正在做一件事,我意识到我想数一数/我可以从一根绳子里找到,然后突然想到,有几种方法可以做到,但我无法决定什么是最好的(或最简单的)。

现在我要说的是:

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;

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

九州编程
浏览 437回答 3
3回答

倚天杖

如果您使用的是.NET 3.5,您可以使用LINQ在一个一行程序中这样做:int count = source.Count(f => f == '/');如果不想使用LINQ,可以使用:int count = source.Split('/').Length - 1;你可能会惊讶地发现,你的原始技术似乎比这两种技术都快了30%!我刚刚完成了“/一次性/on/a/time/”的快速基准测试,结果如下:你原来的=12S来源:Count=19s来源:Split=17s前程(从Bobwienholt的回答)=10S(时间是5000万次迭代,所以你不太可能注意到现实世界中的差异。)

慕仙森

int count = new Regex(Regex.Escape(needle)).Matches(haystack).Count;
随时随地看视频慕课网APP
我要回答