2010-09-20 78 views
2

我需要一个代码来计算richtextbox行中有多少逗号。如果有4个或更多的逗号,然后做一些事情,否则删除行。计算一行中有多少“逗号”

+0

我不知道哪个答案是最有效的。 – 2010-09-20 23:48:57

+0

@Cristian Ciupitu:就我而言 - 在这种情况下,我宁愿选择最可读的:linq – zerkms 2010-09-20 23:50:50

+0

@Cristian - 如果该行少于1,000个逗号,我认为性能不会成为任何他们。我个人认为@ Jay的回答是Rockinest! – 2010-09-20 23:51:03

回答

2

这是C#,但你可以做这样的事情:

int count = 0; 

foreach(char c in string) 
{ 
    if(c == ',') count++; 
} 

return count; 
0

你看这个:

string test = "abc,123,dfg"; 
int count = test.Split(',').length - 1; 

对不起,我一个C#的家伙。下面是vb.net(我认为):

Dim test As String = "abc,123,dfg" 
Dim count As Integer = test.Split(',').length - 1 
4
Dim str As String = "Count, the, commas,,, !" 

    Dim count As Integer = 0 

    For Each c As Char In str 
     If c = "," Then 
      count += 1 
     End If 
    Next 

投票了丹@需求的答案,这仅仅是VB.Net版本。

+1

你应该把一个[链接到丹的答案](http://stackoverflow.com/questions/3756262/count-how-many-commas-are-in-a-line/3756292#3756292)。 LE:如果你可以... – 2010-09-20 23:47:33

+1

如果可以的话,我会有的(用49个代表开始问题,在我需要的下方开始1个问题) – Crag 2010-09-20 23:49:25

+0

Nvm,我得到了它的工作 – Infodayne 2010-09-21 00:50:14

1
var str = "Count, the, commas,,, !"; 
var answer = str.Length - str.Replace(",", "").Length; 
+0

从技术上讲,'Replace'会导致不必要的变化在内存中。 – 2010-09-20 23:51:42

+0

@Josh Stodola:是的,我刚刚发布了“另一种可能的方式来做到这一点” – zerkms 2010-09-20 23:53:40

8

这里的强制性LINQ答案:

Dim cnt As Integer = yourString.Count(Function(ch) ch = ","c) 
+2

+1 - 这些表达式看起来很酷!!!并占用了很多不动产 – 2010-09-20 23:49:23

+0

然而,仅仅因为你看不到实现并不意味着它不会让你付出代价,在这种情况下,不是很糟糕;线性时间,对于一个“无序”索引集合来说,这是无法改进的。一个字符串,但是,有一些Linq单行程看起来非常优雅,但比有效的迭代解决方案慢几个数量级。 – KeithS 2010-09-21 00:24:27

0
if(new RegEx(",").Match(s).Matches.Count > 4){ 
    //insert logic here 
} 

我这样做了我的头顶部,如果它不是完美的代码,所以不要杀我,但你的我在做什么的要点。您可以利用正则表达式来确切地告诉您有多少逗号,并在条件满足时执行所需的逻辑。

+2

你丢失了源字符串 – zerkms 2010-09-20 23:52:42

+0

点了,我更新了这个例子。我的原始观点依然存在。 – 2010-09-21 00:17:47

+0

没有RegEx解决方案,任何问题都无法完成。 – 2010-09-21 00:55:00