2012-01-10 59 views
2

我想查找字符串完全匹配的次數 假設字符串是「我的電腦」。我想找到它,S出現在字符串查找HTML文件中字符串的確切出現次數

這是我的電腦,這是一個很好的電腦,
這是我的電腦,這是我的計算機

所以在最後我將得到計數2,

我試過以下公式'mykeyWord'作爲字符串被發現。

int strength = (innerDocument.DocumentNode.InnerText.Length - innerDocument.DocumentNode.InnerText.ToLower().Replace(mykeyWord.ToLower(), "").Length)/mykeyWord.Length; 

但它也會計算像'我的電腦'這樣的字符串是錯誤的。

回答

4

這是使用正則表達式一個完美的地方,就像你標記您的文章:

Regex re = new Regex("\\b" + Regex.Escape(mykeyWord) + "\\b", RegexOptions.IgnoreCase); 
int count = re.Matches(innerDocument.DocumentNode.InnerText).Count; 
+0

請您解釋一下這個正則表達式模式。 – 2012-01-11 02:58:21

+0

@ZainAli:'\ b'匹配單詞邊界,即任何不是單詞的東西。標點符號,空格等等。它將夾在中間的轉義關鍵字夾在中間以匹配。 – Ryan 2012-01-11 03:04:40

1

你可以使用正則表達式[^A-z](my computer)[^A-z]這符合「我的電腦」但如果它之前或「A後到Z'。要使正則表達式搜索不區分大小寫,請使用RegexOptions.IgnoreCase

編輯 minitech的使用詞邊界的答案是更好的。

1
int FindCount(string keyword, string input) 
    { 
     if (input.Contains(keyword)) 
     { 
      int count = 0; 
      int i = 0; 
      foreach (var c in input) 
      { 
       if (c == keyword[i]) 
        i++; 
       else 
        i = 0; 
       if (i == keyword.Length) 
       { 
        i = 0; 
        count++; 
       } 
      } 
      return count; 
     } 

     return 0; 
    } 
相關問題