2010-09-20 97 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