




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第C#正則表達(dá)式與HashTable詳解目錄1、正則表達(dá)匹配規(guī)則轉(zhuǎn)義字符限定字符分組()2、C#中正則表達(dá)式構(gòu)建與匹配正則表達(dá)式的替換正則表達(dá)式拆分HashTable概述及元素添加Hashtable遍歷Hashtable元素的刪除HashTable元素查找任務(wù)小結(jié)
1、正則表達(dá)
RegularExpressiong,Regex、Regexp
常見語法:
字符匹配重復(fù)匹配字符定位轉(zhuǎn)義匹配
其他高級(jí)語法(字符分組、字符替換和字符決策)
正則表達(dá)式軟件:RegExTester
匹配規(guī)則
元字符匹配:
原樣匹配的時(shí)候,采用的都是不變的直接量字符采用元字符可以匹配一類字符,元字符可以是一個(gè)單獨(dú)的字符,也可以是一對(duì)(前一個(gè)字符通常是反斜杠)元字符:
正則表達(dá)式
[a-zA-Z]:匹配a到z的任意字符[0-9]:匹配0到9的任意數(shù)字
轉(zhuǎn)義字符
如果想查找元字符本身,就必須采用\配合對(duì)應(yīng)院子符來取消特定字符。
如果想查找\或.就采用\或.
限定字符
限定字符又叫重復(fù)描述字符,標(biāo)識(shí)一個(gè)字符要出現(xiàn)的次數(shù)
分組()
Ip地址正則表達(dá)式:
Ip地址匹配(需驗(yàn)證)
((25[0-5]|2[0-4]\d|[01]\d\d)\.){3}(25[0-5]|2[0-4]\d|[01]\d\d)
刪除空行:^[\s\t]*\n
2、C#中正則表達(dá)式構(gòu)建與匹配
使用方法:
引用命名空間System.Text.RegularExpressions構(gòu)造正則表達(dá)式在使用正則表達(dá)式時(shí),要先構(gòu)造正則表達(dá)式,這就用到了Regex類。
其構(gòu)建方式有兩種:
基本形式:Regex(正則表達(dá)式)重載形式:Regex(正則表達(dá)式,匹配選項(xiàng))
其中匹配選項(xiàng)提供一些特殊的幫助,是一個(gè)枚舉值,包括下面六個(gè)值:
IgnoreCase(忽略大小寫)ReghtToLeft(從右向左)None(默認(rèn))CultureInvariant(忽略區(qū)域)MultLine(多行模式)SingleLine(單行模式)
在Regex類中包含IsMatch(),Replace(),Split()等
IsMatch():測(cè)試字符是否滿足正則表達(dá)式,返回一個(gè)布爾值,驗(yàn)證用戶輸入的數(shù)據(jù)是否滿足條件(例如是否為合法手機(jī)號(hào),是否為合法郵箱等)。
IsMatch()的使用格式:Regex.IsMatch(要判斷的字符串,正則表達(dá)式)
usingSystem;
usingSystem.Text.RegularExpressions;
namespace正則表達(dá)式的構(gòu)建及匹配
classProgram
staticvoidMain(string[]args)
//判斷是否為北京市固定電話,區(qū)號(hào)為010,民用電話號(hào)碼為7-8位
stringpattern=@"^(010|010-)\d{7,8}$";//判定的模式
string[]input={,"01023415678","01098765897","031078965476"};
Console.WriteLine("靜態(tài)方法");
foreach(stringoutstrininput)
boolmybool=Regex.IsMatch(outstr.Trim(),pattern);
if(mybool)
Console.WriteLine(outstr+"是北京固話");
else
Console.WriteLine(outstr+"不是北京市固話");
//實(shí)例化的方式
Console.WriteLine("實(shí)例化方式");
foreach(stringoutstrininput)
Matchmymatch=Regex.Match(outstr.Trim(),pattern);
if(mymatch.Success)
Console.WriteLine(outstr+"是北京固話");
else
Console.WriteLine(outstr+"不是北京市固話");
Console.ReadKey();
}
正則表達(dá)式的替換
格式:Regex.Replace(要搜索匹配項(xiàng)的字符串,要替換的原字符串,替換后的字符串);
usingSystem;
usingSystem.Text.RegularExpressions;
namespace正則表的是的替換
classProgram
staticvoidMain(string[]args)
//將www.替換為http://www.
stringmystr="WelcometoWWW.WwW.";
stringpattern=@"\bw{3}\.\w+\.(com|net|org)\b";
stringreplacement1=@"http://$//$匹配的內(nèi)容
stringreplacement2="\n"+@"http://$//$匹配的內(nèi)容,此種方式只是將響應(yīng)的字符拼接到匹配的字符串前面,
Console.WriteLine("替換前的字符串"+mystr);
Console.WriteLine("替換后的字符串1-1"+Regex.Replace(mystr,pattern,replacement1));
Console.WriteLine("替換后的字符串2-1"+Regex.Replace(mystr,"www.",@"http://www."));//此種方式是將匹配的內(nèi)容替換成目標(biāo)字符
Console.WriteLine("替換后的字符串1_2"+Regex.Replace(mystr,pattern,replacement2,RegexOptions.IgnoreCase));
Console.WriteLine("替換后的字符串2-2"+Regex.Replace(mystr,"www.","\n"+@"http://www.",RegexOptions.IgnoreCase));
Regexmyregex=newRegex(pattern,RegexOptions.IgnoreCase);
stringresult=myregex.Replace(mystr,replacement2);
Console.WriteLine("替換后的字符串3"+result);
Regexmyregex4=newRegex(pattern,RegexOptions.IgnoreCase);
stringresult4=myregex4.Replace(mystr,replacement2);
Console.WriteLine("替換后的字符串4"+result4);
stringpattern5=@"\bw{3}\.";
stringreplacement5="\n"+@"http://www.";
Console.WriteLine("替換后的字符串5"+Regex.Replace(mystr,pattern5,replacement5,RegexOptions.IgnoreCase));
Console.ReadLine();
}
正則表達(dá)式拆分
要通過正則表達(dá)式拆分字符串,就要通過Regex類的Split方法,格式為:
Regex.Split(要拆分的字符串,要匹配的正則表達(dá)式模式)
usingSystem;
usingSystem.Text.RegularExpressions;
namespace正則表達(dá)式的拆分
classProgram
staticvoidMain(string[]args)
stringinput="一、張三二、李四三、王五四、趙六";
stringpatern=@"\b[一二三四]、";
Console.WriteLine(Type.GetType((Regex.Split(input,patern)).ToString()));
foreach(stringoutstrinRegex.Split(input,patern))
if(!string.IsNullOrEmpty(outstr))Console.WriteLine(outstr);
Console.ReadKey();
}
HashTable概述及元素添加
HashTable也被稱作為哈希表,鍵值對(duì)或者關(guān)聯(lián)數(shù)組。
用于處理和表寫類似Ken/value的減值對(duì),其中Key通??捎脕砜焖俨檎?,同時(shí)Key是區(qū)分大小寫;Value用于存儲(chǔ)對(duì)應(yīng)于Key的值。HashTable中key/value鍵值對(duì)均為Object類型,所有HashTable可以支持任何類型的Key/Value鍵值對(duì)。
Hashtable特點(diǎn):鍵與值成對(duì)存在,鍵時(shí)唯一的不能重復(fù)的
HashTable中的每個(gè)元素時(shí)一個(gè)存儲(chǔ)在DictionaryEntry對(duì)象中的鍵值對(duì)
HashTable優(yōu)點(diǎn):把數(shù)據(jù)的存儲(chǔ)和查找的時(shí)間大降低幾乎可以看成是常數(shù)時(shí)間;而代價(jià)僅僅小號(hào)比較多的內(nèi)容。然而在當(dāng)前可利用內(nèi)存越來越多的情況下,用空間換取時(shí)間的做法是可取的。另外,編碼比較容易也是他的特點(diǎn)之一。
聲明格式:
引入命名空間:usingSystem.Collections;
元素添加方法Add
usingSystem;
usingSystem.Collections;
namespaceHasehtable1
classProgram
staticvoidMain(string[]args)
Hashtableht=newHashtable();
ht.Add("name","darly");
ht.Add("gender","男");
ht[3]="王五";//用此種方式一堆Hashtable去增加元素時(shí)應(yīng)該注意
//如果對(duì)應(yīng)的鍵key存在只是達(dá)到一種重新賦值的結(jié)果,如果不存在才會(huì)增加對(duì)應(yīng)鍵值對(duì)
ht["gender"]="女";
//數(shù)組通過length可以確定長(zhǎng)度
//集合是通過count來確定個(gè)數(shù)
Console.WriteLine(ht.Count);
Console.ReadKey();
}
Hashtable遍歷
遍歷用到DictionaryEntry(字典鍵/值對(duì))
usingSystem;
usingSystem.Collections;
namespaceHasehtable1
classProgram
staticvoidMain(string[]args)
Hashtableht=newHashtable();
ht.Add("name","darly");
ht.Add("gender","男");
ht[3]="王五";//用此種方式一堆Hashtable去增加元素時(shí)應(yīng)該注意
//如果對(duì)應(yīng)的鍵key存在只是達(dá)到一種重新賦值的結(jié)果,如果不存在才會(huì)增加對(duì)應(yīng)鍵值對(duì)
ht["gender"]="女";
ht["department"]="測(cè)試部";
//數(shù)組通過length可以確定長(zhǎng)度
//集合是通過count來確定個(gè)數(shù)
Console.WriteLine(ht.Count);
foreach(objectmyobjinht)
Console.WriteLine(myobj);//此處僅僅輸入的是類型
foreach(DictionaryEntrymyobjinht)
Console.WriteLine("鍵為:{0},值為:{1}",myobj.Key,myobj.Value);
foreach(objectmyobjinht.Keys)
Console.WriteLine("鍵為:{0};值為{1}",myobj,ht[myobj]);
Console.ReadKey();
}
Hashtable元素的刪除
RemoveClear
usingSystem;
usingSystem.Collections;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
namespaceHashtable元素刪除
classProgram
staticvoidMain(string[]args)
Hashtableht=newHashtable();
ht.Add(1,"張颯");
ht.Add(true,"李四");
ht.Add(false,"王五");
ht.Add(3,"趙六");
foreach(DictionaryEntrymydeinht)
Console.WriteLine("鍵為{0},值為:{1}",myde.Key,myde.Value);
//刪除Remove
ht.Remove(false);
Console.WriteLine("移除結(jié)果");
foreach(DictionaryEntrymydeinht)
Console.WriteLine("鍵為{0},值為:{1}",myde.Key,myde.Value);
//刪除Clear,刪除所有內(nèi)容
ht.Clear();
Console.WriteLine("清除結(jié)果");
foreach(DictionaryEntrymydeinht)
Console.WriteLine("鍵為{0},值為:{1}",myde.Key,myde.Value);
Console.ReadLine();
}
HashTable元素查找
Hashtable特點(diǎn):鍵與值成對(duì)存在,鍵時(shí)唯一的不能重復(fù)的,在查找元素的時(shí)候,我們往往是依據(jù)鍵查找值的。
三種方法:(前兩種方法是實(shí)質(zhì)是一樣的)
ContainsContainsKeyContainsValue
usingSystem;
usingSystem.Collections;
namespaceHashtable元素查找
classProgram
staticvoidMain(string[]args)
Hashtableht=newHashtable();
ht.Add(1,"張三");
ht.Add(2,"里斯");
ht.Add(3,"王五");
ht.Add(4,"趙六");
ht[5]="何七";
ht[6]="張三";
Console.WriteLine("添加的結(jié)果");
foreach(DictionaryEntrymydeinht)
Console.WriteLine("鍵為{0}——職位{1}",myde.Key,myde.Value);
//元素查找
if(ht.ContainsKey(1))//ContainsKey()存在返回true,不存在返回false
Console.WriteLine("存在鍵=1的元素");
elseConsole.WriteLine("不存在該該鍵");
if(ht.ContainsValue("張三"))Console.WriteLine("存在值為張三的元素");
elseConsole.WriteLine("不存在值為張三的元素");
Console.Read();
}
任務(wù)小結(jié)
統(tǒng)計(jì)指定字符串(字符串可自行聲明)中漢字的個(gè)數(shù)以及每個(gè)漢字出現(xiàn)的次數(shù),將其輸出到屏幕上
編程思路:
判斷漢字,可以通過正則表達(dá)式然后可將對(duì)應(yīng)漢字存入ArrayList中通過一定的運(yùn)算規(guī)則,計(jì)算出漢字的個(gè)數(shù)與出現(xiàn)的次數(shù)并將結(jié)果對(duì)應(yīng)存入Hashtable遍歷Hashtable即可完成任務(wù)實(shí)施
usingSystem;
usingSystem.Text.R
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 代償合同范例
- 工作個(gè)人計(jì)劃總結(jié)模版
- 百日沖刺校長(zhǎng)發(fā)言稿模版
- 從辦公自動(dòng)化到智能管理看區(qū)塊鏈如何重塑企業(yè)生態(tài)圈
- 機(jī)器人焊接 12 項(xiàng)目六任務(wù)6.2教學(xué)設(shè)計(jì)
- 企業(yè)內(nèi)部通信與協(xié)作的數(shù)字化轉(zhuǎn)型-以區(qū)塊鏈為例
- 溫州市普通高中2025屆高三第三次適應(yīng)性考試生物試題及答案
- 假冒購貨合同范例
- 醫(yī)療物資供應(yīng)鏈中區(qū)塊鏈技術(shù)的安全保障
- 醫(yī)療大數(shù)鋸的隱私保護(hù)從數(shù)據(jù)科學(xué)到實(shí)踐應(yīng)用
- 2025年金融數(shù)學(xué)考試試題及答案
- 2024年安徽省公務(wù)員【申論】考試真題及答案-(A卷+B卷+C卷)三套
- 浙江國(guó)企招聘2024溫州市公用事業(yè)發(fā)展集團(tuán)有限公司招聘8人筆試參考題庫附帶答案詳解
- 研發(fā)月報(bào)工作總結(jié)
- 體育產(chǎn)業(yè)信息技術(shù)應(yīng)用提升計(jì)劃
- 2025年山東魯商誠(chéng)正教育科技有限公司招聘筆試參考題庫含答案解析
- 急性ST段抬高型心肌梗死溶栓治療專家共識(shí)2024解讀
- 服務(wù)消費(fèi)券發(fā)放的精細(xì)化實(shí)施方案
- 急診科主任的職責(zé)與醫(yī)療質(zhì)量提升
- 《裝配式施工技術(shù)》課件-5.3 外墻板縫防水
- 2025年國(guó)家電力安全知識(shí)競(jìng)賽題庫及答案(共50題)
評(píng)論
0/150
提交評(píng)論