2010-04-21 55 views
4

給定一個字符串數組,例如這樣的:計數子出現在字符串[]

string[]={"bmw"," ","1bmw"," "}; 

我需要計數的子bmw多久該數組中發生。在這個例子中它發生2次。

如何在C#中編寫?

還我想忽略大寫字符,

螫[] = { 「BMW」, 「」, 「BMW」, 「1bmw」}

然後計數結果爲3。

我該怎麼辦?

感謝大家的回答。

回答

5

沒有LINQ

int counter = 0; 

foreach(string item in string_array) 
{ 
    if(item.IndexOf("bmw") > -1){ 
    counter++; 

    } 
} 
+0

嗨,怎麼樣刺痛[] = {「寶馬」,「」,「寶馬」,「1bmw」} 有一個「寶馬」不完全一樣用「寶馬」 我也想算這樣word in。 – user321952 2010-04-26 14:43:53

+0

@ shaon-fan處理這個問題的最簡單方法是在每個字符串上使用ToLower()來進行搜索。 – kemiller2002 2010-04-26 14:48:00

1

如果您使用C#3,你可以使用LINQ:

var strings = {"bmw"," ","1bmw"," "}; 
var count = string.Where(s => s.IndexOf("bmw") > -1).Count(); 

否則,循環將工作太:

string[] strings = {"bmw"," ","1bmw"," "}; 
int count = 0; 
foreach(string s in strings) { 
    if(s.IndexOf("bmw" > -1)) { 
     count++; 
    } 
} 
+0

嗨,如何刺[] = {「bmw」,「」,「BMw」,「1bmw」}有一個「BMw」與「bmw」不完全相同我也想計算這個單詞。 – user321952 2010-04-26 14:44:41

+0

@ shaon-fan:如果你想要不區分大小寫的比較,只需使用:'IndexOf(「bmw」,StringComparison.OrdinalIgnoreCase)''OrdinalIgnoreCase'參數將匹配比較中的任何套管。 – LBushkin 2010-04-26 14:47:50

15

嘗試:

var str = new string[] { "bmw", " ", "1bmw", " " }; 
var count = str.Count(s => s.Contains("bmw")); 

下一個代碼將返回不區分大小寫出現的次數(如在評論中提到作家):

var count = str.Count(s => 
    s.IndexOf("bmw", StringComparison.OrdinalIgnoreCase) > -1 
); 

更多關於字符串比較可以發現here

+0

嗨,叮叮[] = {「bmw」,「」,「BMw」,「1bmw」}如果有一個「BMw」與「bmw」不完全相同,我也想把這個單詞計算在內。 – user321952 2010-04-26 14:45:33

3

您可以使用LINQ這個像這樣:使用LINQ

static int CountOfString(IEnumerable<string> items, string substring, bool isCaseSensitive) 
{ 
    StringComparison comparison = StringComparison.InvariantCulture; 
    if (!isCaseSensitive) 
     comparison = StringComparison.InvariantCultureIgnoreCase; 

    return items.Count(item => item.IndexOf(substring, comparison) > -1); 
} 

var s = new string[] {"bmw", "1bmw"}; 
var result = s.Where(o=>o.Contains("bmw")).Count(); 
+0

嗨,如何刺[] = {「bmw」,「」,「BMw」,「1bmw」}有一個「BMw」不完全相同「bmw」我也想數這個單詞。 – user321952 2010-04-26 14:45:03

1

一種方法使用它

string[] items = { "bmw", " ", "1bmw", " " }; 
int count = CountOfString(items, "bmw", false); 
1

案例不敏感使得它多一點冗長,但仍然使用以下相當緊湊:

var str = new sting[]={"bmw", "", "BMw","1bmw"}; 
var count = str.Count(s => s.IndexOf("bmw", StringComparison.InvariantCultureIgnoreCase) > -1); 
相關問題