为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
九州编程 2019-06-11 21:01:27
我正在做一件事,我意识到我想数一数/我可以从一根绳子里找到,然后突然想到,有几种方法可以做到,但我无法决定什么是最好的(或最简单的)。现在我要说的是: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;如何计算字符串中出现的字符串(实际上是字符)?
查看完整描述

3 回答

?
倚天杖

TA贡献1828条经验 获得超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万次迭代,所以你不太可能注意到现实世界中的差异。)


查看完整回答
反对 回复 2019-06-11
?
慕仙森

TA贡献1827条经验 获得超7个赞

int count = new Regex(Regex.Escape(needle)).Matches(haystack).Count;


查看完整回答
反对 回复 2019-06-11
  • 3 回答
  • 0 关注
  • 436 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信