【C#】IndexOf應用

【.net】IndexOf應用

今天又是回答問題+自我學習篇。

問題來源:ASP.Net-文章關鍵字次數計算

想想這一定可以做到的啊!!

就想到前幾天有回答一篇ASP相關的問題。請見:字串處理問題

相同的概念,C#應該也有對的方法才是。

以前就知道IndexOf這個函示了,今天就利用它吧。

上網查了一下,果然已經有此種範例,我稍微把它改造一下就達到回答問題的方式了。

利用While迴圈+MSDN:IndexOf(string,Int32)

.aspx畫面:

<div>

       文章:<asp:TextBox ID="tbxWord" runat="server" Height="225px" TextMode="MultiLine" Width="520px">All Things D本周引用消息來源報導,Facebook已選中宏達電為其打造一支深度整合Facebook服務的Android手機,並命名為Buffy。

然市場上有不少標榜整合Facebook服務的手機,但報導指出,此次的專案是由Facebook技術長Bret Taylor負責,這意味著Buffy將完全以Facebook的需求為出發點。

uffy將以修改後的Android版本為基礎,市場預期它會是一支以Facebook服務為導向的社交手機,可能讓手機照相機或通訊錄與Facebook完全整合,估計可能要12~18個月後才會問世。

達電與Facebook皆未正面回應此一消息,但Facebook迂迴地表示,該站認為行動裝置若可深入整合社交服務會更好,所以他們正與電信營運商、硬體製造商、行動平台供應商及程式開發人員合作以讓全球的使用者都能享受更強大的社交經驗。

       </asp:TextBox>

       <br />

       關鍵字:<asp:TextBox ID="tbxKW" runat="server"></asp:TextBox>

       <br />

       關鍵字出現次數:<asp:Label ID="lblCount" runat="server"></asp:Label>

       <asp:Button ID="btnCount" runat="server" Text="計算" onclick="btnCount_Click" />

</div>

.cs 計算按鈕:

protected void btnCount_Click(object sender, EventArgs e)
{       

    int totalcount = 0;
    int i = 0;          //用來放開始查詢的值,一開始從0開始。 

    //IndexOf若找不到時會回傳-1則結束迴圈。
    while ((i = tbxWord.Text.Trim().IndexOf(tbxKW.Text, i)) != -1)
    {
        i++;            //i會等於第一次在字串中搜尋到的位置,此時把他+1,
                        //下一個While就會從搜尋到的位置的下一位再繼續搜尋。

        totalcount += 1;
    }
    lblCount.Text = totalcount.ToString();
}

畫面:

1

可以看到,利用宏達電當關鍵字會搜尋到出現兩次。

打完收工。