C#第五次作業(Regex及委託)

來源:互聯網
上載者:User

標籤:

1. Regex

在編寫處理字串的程式或網頁時,經常會有尋找符合某些複雜規則的字串的需要。Regex就是用於描述這些規則的工具。換句話說,Regex就是記錄文本規則的代碼。Regex由literals(字面值)、metacharacters(元字元)兩類字元組成。字面值是你想要通配的字元,元字元是Regex使用的特殊字元,像是一種命令,使Regex具有相應功能。

假設你在一篇英文小說裡尋找hi,你可以使用Regexhi。這幾乎是最簡單的Regex了,它可以精確匹配這樣的字串:由兩個字元組成,前一個字元是h,後一個是i。通常,處理Regex的工具會提供一個忽略大小寫選項,如果選中了這個選項,它可以匹配hi,HI,Hi,hI這四種情況中的任意一種。不幸的是,很多單詞裡包含hi這兩個連續的字元,比如him,history,high等等。用hi來尋找的話,這裡邊的hi也會被找出來。如果要精確地尋找hi這個單詞的話,我們應該使用\bhi\b。\b是Regex規定的一個特殊代碼,代表著單詞開頭或結尾,也就是單詞的分界處。雖然通常英文的單詞是由空格,標點符號或者換行來分隔的,但是\b並不匹配這些單詞分隔字元中的任何一個,它只匹配一個位置。

這就是Regex的功能,在很多文字編輯器裡,用於檢索、替換那些符合某個模式的文本。

然而Regex是有缺陷的

當Regex中包含能接受重複的限定符時,通常的行為是(在使整個運算式能得到匹配的前提下)匹配儘可能多的字元。

有時,我們更需要匹配儘可能少的字元。前面給出的限定符都可以被轉化為另一種模式,只要在它後面加上一個問號?。這樣.*?就意味著匹配任意數量的重複,但是在能使整個匹配成功的前提下使用最少的重複。

2. 委託

delegate是表示對具有特定參數列表和傳回型別的方法的引用的類型。 在執行個體化委託時,我們可以將其執行個體與任何具有相容簽名和傳回型別的方法相關聯。 我們可以通過委託執行個體調用方法。委託用於將方法作為參數傳遞給其他方法。 事件處理常式就是通過委託調用的方法。 我們可以建立一個自訂方法,當發生特定事件時,某個類(如 Windows 控制項)就可以調用我們的方法。

可將任何可訪問類或結構中與委託類型匹配的任何方法分配給委託。 該方法可以是靜態方法,也可以是執行個體方法。 這樣便能通過編程方式來更改方法調用,還可以向現有類中插入新代碼。

委託具有以下屬性:

1)委託類似於 C++ 函數指標,但它們是型別安全的。

2)委託允許將方法作為參數進行傳遞。

3)委託可用於定義回調方法。

4)委託可以連結在一起;例如,可以對一個事件調用多個方法。

5)方法不必與委託類型完全符合。

委託是一個類,它定義了方法的類型,使得可以將方法當作另一個方法的參數來進行傳遞,這種將方法動態地賦給參數的做法,可以避免在程式中大量使用If-Else(Switch)語句,同時使得程式具有更好的可擴充性。

委託是可以定義的,當然也是可以禁止的。

委託的定義通常類似於變數,區別不大。

C#第五次作業(Regex及委託)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.