正則核心物件詳解 二

2021-09-08 14:18:27 字數 2270 閱讀 7562

前言:大家反映文章的排版有問題,我在寫文章的時候也一直注意這個問題,寫的時候排版不錯,但是發上去了就變了,我也不知道怎麼回事,希望大家理解!謝謝各位!

1.regex類的一些高階話題.

首先,我們接著上次的regex的一些繼續:

1.1在regex中有乙個方法很奇怪的,那就是它的replace方法,很多的類都有這個方法,比如string類也有,說白了就了替換方法,但是regex類的這個方法稍有

不同.首先,我們還是來舉個例子,便於後面的講解:

regex regex

=new

regex(

@"\s+");

上面的例子很簡單,下面我們來看看replace方法的幾個過載

regex.replace(strstring,replacement);

regex.replace(strstring,replacement,count);

regex.replace(strstring,replacement,count,offset);

方法的返回值型別都是string的.

我們來解析引數的意思:strstring:要被替換的那個字串,replacement:用來替換的字串,比如strstring="   xiaoyang    ",replacement=" ",那麼

我們實際是用乙個空格來替換strstring的所有空格.count:就是說明,你要匹配幾次,是個int型別的數,預設情況下,你不設定這個值,你的正規表示式會把strstring中符

合條件的全部匹配,然後替換,如果,你設定了這個數,如上面的例子,你不設定時,結果是" xiaoyang "(注意,前後只有乙個空格了,原來有很多的).如果你設定count引數

為1,那麼你的正規表示式就只是匹配替換乙個,即替換strstring前面的那些空白,結果就是" xiaoyang    ";

還有乙個引數就是offset,這個引數和前面match()方法的一樣,指定開始匹配的位置.

下面進入一些高階話題:

上面講了replacement就是用來替換的字串,其實這只是replcement的乙個用法,即你可以在這樣regex.replace(strstring," ***x");"***x"表示你用來

替換的字串.其實在replacement引數這個位置,我們還可以傳入乙個委託,使得用法更加的靈活.

這個方法很有用,比如,但你要替換strstring中的一些字元,但是你不只是簡簡單單的將用乙個,如"a"來替換strstring中的乙個"bc",你而是想,只要

在strstring中看見"bc",那麼就要開始進行一些操作,顯示把"bc"進行一些運算,然後在再進行一些操作,之後還進行一些操作.這樣,你就要再看見"bc"後傳入

乙個方法.那麼現在,將replacement 傳入乙個委託(函式指標)就很好處理這個問題..

這個委託的形式如下:

matchevaluator matchevaluator

=new

matchevaluator (matchfun);

//注意:matchfun就是你要進行處理的那個方法,方法比如有乙個match型別的引數

//而且,這個方法餓返回值是string型別的

那麼我們之前說的那個例子用委託來說下:

regex.replace(strstring,matchevaluator);

然後,你定義方法就可以了,如string mymatchfun(match match);

而且再mymatchfun的方法中,match物件中儲存了你匹配的有關資訊的,如你剛剛匹配到的那個"bc"值,就再match.value中,如果有分組的話,你還

可以用groups[i](注意:i是個陣列索引)來取你想要的值.

好了,高階話題就先說到這裡,我們下面來看看regex的最後乙個方法split.

這個方法和string類的split方法很相似的,都是分割,只不過,regex類的這個方法是先匹配,再分割,看看下面的這個例子.

regex regex

=new

regex(

@"\.");

string

result

=regex.split(

"192.168.1.1");

先是匹配字串中所有"."然後分割.返回結果是陣列.

下面是split的方法過載

regex.split(strstring);

regex.split(strstring,count);

regex.split(strstring,count,offset)

引數的意思和上面的replace方法的一樣,我不贅述了.

正則核心物件詳解 三

前言 很感謝大家對正規表示式文章的支援,這篇文章是這個系列的最後一節了,但是正如之前所說的,這裡將的僅僅只是怎麼用.net的正規表示式類,但是,對正規表示式的引擎的內部機制沒有提及,如果大家需要,我會繼續寫下有關內部機制的問題.今天的內容如下 1.match物件的使用 2.group物件的使用 3....

核心物件詳解

核心物件只是作業系統核心分配的乙個記憶體塊,並且只能由作業系統核心訪問。該記憶體塊是一種資料結構,它的成員負責維護該物件的各種資訊。windows提供一組函式建立和操作核心物件。呼叫乙個建立核心物件的函式,函式會返回乙個控制代碼,該控制代碼標識了這個核心物件,這個控制代碼可由當前程序中的所有執行緒呼...

物件導向詳解(二)

許可權修飾符 類名 引數列表 注意 構造方法的方法名字必須和類名保持完全一致 構造方法沒有返回值,不要寫返回值型別,連void也不用 每乙個類缺省會有乙個空參的空參的構造方法 如果自己寫了構造方法,預設的構造方法就失效了package com.qf.obj public class demo01 c...