10---Net基础加强
生活随笔
收集整理的這篇文章主要介紹了
10---Net基础加强
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
復(fù)習(xí):
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Text.RegularExpressions; using System.Runtime.Serialization.Formatters.Binary; using System.IO;namespace _01作業(yè)問題 {class Program{static void Main(string[] args){#region 正則//Regex regex = new Regex(@"^\d{6}$", RegexOptions.ECMAScript);//while (true)//{// Console.WriteLine("請(qǐng)輸入一個(gè)字符串");// string postcode = Console.ReadLine();// bool b = regex.IsMatch(postcode);// Console.WriteLine(b);//} #endregion#region 二進(jìn)制序列化的步驟// //創(chuàng)建一個(gè)二進(jìn)制序列化器// BinaryFormatter bf = new BinaryFormatter();//using (FileStream fsWrite = File.OpenWrite("data"))//{// //2.執(zhí)行序列化或者反序列化// //調(diào)用序列化的時(shí)候,需要傳遞兩個(gè)參數(shù),一個(gè)是流,另一個(gè)是需要序列化的對(duì)象// bf.Serialize(fsWrite,new MyClass());//}//Console.WriteLine("OK");#endregion#region 二進(jìn)制反序列化的步驟//BinaryFormatter bf = new BinaryFormatter();//using (FileStream fsRead = File.OpenRead("data"))//{// object obj = bf.Deserialize(fsRead);// MyClass mc = obj as MyClass;//}//Console.WriteLine("OK");#endregion#region MyRegion//while (true)//{// Console.WriteLine("請(qǐng)輸入一個(gè)字符串");// string input = Console.ReadLine();// 表示只有用戶輸入一個(gè)數(shù)字字符的時(shí)候才返回true// //bool b = Regex.IsMatch(input,"^\\d$");// //表示只有用戶輸入\d的時(shí)候返回true,否則輸入其它內(nèi)容都返回false// //bool b = Regex.IsMatch(input, "^\\\\d$");// bool b = Regex.IsMatch(input, @"^\\d$");// Console.WriteLine(b);//} #endregion#region 匹配IP地址,4段用.分割的最多的三位數(shù)字。192.168.54.77、333.333.333.333假設(shè)都是正確的//while (true)//{// Console.WriteLine("請(qǐng)輸入一個(gè)字符串");// string ip = Console.ReadLine();// bool b = Regex.IsMatch(ip, @"^(\d{1,3}\.){3}\d{1,3}$",RegexOptions.ECMAScript);// Console.WriteLine(b);//} #endregion#region 判斷是否是合法的日期“2008-08-08”.四位數(shù)字-兩位數(shù)字-兩位數(shù)字//while (true)//{// Console.WriteLine("請(qǐng)輸入日期");// string date = Console.ReadLine();// //bool b = Regex.IsMatch(date, @"^\d{4}-\d{2}-\d{2}$", RegexOptions.ECMAScript);// bool b = Regex.IsMatch(date, @"^\d{4}-(0[1-9]|1[0-2])-\d{2}$", RegexOptions.ECMAScript);// Console.WriteLine(b);//} #endregion#region 判斷是否是合法的url地址//while (true)//{// Console.WriteLine("請(qǐng)輸入");// string url = Console.ReadLine();// bool b = Regex.IsMatch(url, @"^[a-zA-Z0-9]+://.+$");// Console.WriteLine(b);//} #endregion}}[Serializable]class MyClass{ } }?
字符串提取與正則表達(dá)式提取-提取組?
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Text.RegularExpressions; using System.IO;namespace _02正則表達(dá)式提取 {class Program{static void Main(string[] args){#region 提取出字符串中的所有數(shù)字//string msg = "大家好呀,hello,2015年 3月30日是個(gè)好日子,恩恩 9494,吼吼886";////字符串提取 Match()和 Matches()////提取第一個(gè)匹配的字符串,只提取一個(gè)。////Match match = Regex.Match(msg, @"\d", RegexOptions.ECMAScript);//2//Match match = Regex.Match(msg, @"\d+", RegexOptions.ECMAScript);//2015//Console.WriteLine(match.Value);//Console.ReadLine();////逐個(gè)提取////Match match1 = Regex.Match(msg, @"\d+", RegexOptions.ECMAScript);//2015////match1.Index=////Console.WriteLine(match1.Value);//Regex regex = new Regex(@"\d+", RegexOptions.ECMAScript);//Match match = regex.Match(msg);//Console.WriteLine(match.Value);//match = regex.Match(msg,match.Index+match.Value.Length);//Console.WriteLine(match.Value);//match = regex.Match(msg, match.Index + match.Value.Length);//Console.WriteLine(match.Value);//Console.ReadLine();////逐個(gè)提取////一般在調(diào)用IsMatch()的時(shí)候要判斷完全匹配,所以要加^$////但是在Match()和 Matches()的時(shí)候,是要從一個(gè)大字符串中提取某一部分匹配的內(nèi)同所以不能加^$////如果加了,則必須整個(gè)大字符串與給定的正則表達(dá)式完全匹配//Regex regex = new Regex(@"\d+", RegexOptions.ECMAScript);//Match match = regex.Match(msg);//while (match.Value.Length!=0)//{// Console.WriteLine(match.Value);// match = regex.Match(msg, match.Index + match.Value.Length);//}//Console.ReadLine();////提取所有匹配的字符串// MatchCollection matches = Regex.Matches(msg, @"\d+", RegexOptions.ECMAScript);// for (int i = 0; i < matches.Count; i++)// {// Console.WriteLine(matches[i].Value); // }// Console.ReadLine();//判斷是否匹配//Regex.IsMatch()#endregion#region 從文件中提取Email地址////1.讀取文件中的內(nèi)容到字符串//string html = File.ReadAllText("提取Email.htm");////2.創(chuàng)建正則表達(dá)式//MatchCollection matches = Regex.Matches(html, @"[-a-zA-Z0-9._]+@[-a-zA-Z0-9]+(\.[a-zA-Z0-9]+){1,}", RegexOptions.ECMAScript);////3.進(jìn)行提取//for (int i = 0; i < matches.Count; i++)//{// //4.輸出// Console.WriteLine(matches[i].Value);//}//Console.ReadLine();#endregion#region 統(tǒng)計(jì)葉長種個(gè)數(shù)//string msg = "大家好哦,我叫葉長種,葉長種是個(gè)好孩子,哈哈哈哈哈哈·····你有認(rèn)識(shí)叫葉長種的嗎";//MatchCollection matches = Regex.Matches(msg, "葉長種");//foreach (Match item in matches)//{// Console.WriteLine(item.Index);//}//Console.WriteLine("一共出現(xiàn)了{(lán)0}次",matches.Count);//Console.ReadLine();#endregion#region 字符串提取////1.從一個(gè)大字符串中提取 某一部分字符串////2.在提取到的字符串中,在提取其中的某部分////提取組////1.讀取文件中的內(nèi)容到字符串//string html = File.ReadAllText("提取Email.htm");////2.創(chuàng)建正則表達(dá)式//MatchCollection matches = Regex.Matches(html, @"[-a-zA-Z0-9._]+@[-a-zA-Z0-9]+(\.[a-zA-Z0-9]+){1,}", RegexOptions.ECMAScript);////()()(()()) 按照括號(hào)來分組//foreach (Match item in matches)//{// Console.WriteLine(item.Value+"================"+item.Groups[1].Value);//}//Console.WriteLine(matches.Count);//Console.ReadLine();#endregion#region 提取組2//Match match = Regex.Match("age=30",@"^(.+)=(.+)$");//Console.WriteLine(match.Groups[1].Value+"============="+match.Groups[2].Value);//Console.ReadKey();#endregion#region 從文件路徑中提取文件名////普通的字符串提取:Match().Matches(),思路是從整個(gè)字符串中找出所有那些匹配正則表達(dá)式的字符串////提取組的思路:先寫一個(gè)能滿足整個(gè)字符串的正則表達(dá)式,然后再正則表達(dá)式中用括號(hào)講那些你想要提取的內(nèi)容擴(kuò)起來////這樣就可以提取你想要的組了//string path = @"c:\windows\testb.txt";//Match match=Regex.Match(path, @".+\\(.+)");//Console.WriteLine(match.Groups[1].Value);//Console.ReadKey();#endregion#region 提取年月日//string msg = "June 26 , 1951 ";//Match match = Regex.Match(msg,@"^([a-zA-Z]+)\s*(\d{1,2})\s*,\s*(\d{4})\s*$");//Console.WriteLine(match.Groups[1].Value);//Console.WriteLine(match.Groups[2].Value);//Console.WriteLine(match.Groups[3].Value);//Console.ReadKey();#endregion#region 從Email中提取出用戶名和域名,比如從test@163.com中提取出test和163.com。//string email = "test@163.com";//Match match = Regex.Match(email, @"(^\w+)@(\w+\.\w+)$");//Console.WriteLine(match.Groups[1].Value + " " + match.Groups[2].Value);//Console.ReadKey();#endregion#region “192.168.10.5[port=21,type=ftp]”,這個(gè)字符串表示IP地址為192.168.10.5的服務(wù)器的21端口提供的是ftp服務(wù),其中如果“,type=ftp”部分被省略,則默認(rèn)為http服務(wù)。請(qǐng)用程序解析此字符串,然后打印出“IP地址為***的服務(wù)器的***端口提供的服務(wù)為***”//string s1 = "192.168.10.5[port=21,type=ftp]";////string s1 = "192.168.10.5[port=21]";//Match match = Regex.Match(s1, @"^((\d{1,3}\.){3}\d{1,3})\[port=(\d{1,2})(,type=([a-zA-Z0-9]+))?\]$", RegexOptions.ECMAScript);//Console.WriteLine("ip:{0}", match.Groups[1].Value);//Console.WriteLine("port:{0}", match.Groups[3]);//Console.WriteLine("service:{0}", match.Groups[5].Value.Length == 0 ? "http" : match.Groups[5].Value);//Console.ReadKey();#endregion}} }??
?正則表達(dá)式-貪婪模式
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Text.RegularExpressions;namespace _03貪婪模式 {class Program{static void Main(string[] args){#region 貪婪模式介紹//string msg = "1111。11。111。111111。";////正則表達(dá)式會(huì)盡可能多的找到匹配,這就是正則表達(dá)式的貪婪模式。////Match match = Regex.Match(msg, ".+");////終止貪婪模式: ? 具有終止貪婪模式的功能。////當(dāng)?出現(xiàn)在了另外一個(gè)限定符后的時(shí)候,表示終止貪婪模式。////終止貪婪模式,表示,盡可能少的去匹配,則只匹配一個(gè)。//Match match = Regex.Match(msg, ".+?"); ////Match match = Regex.Match(msg, ".+*?"); //盡可能少的匹配 0個(gè)//Console.WriteLine(match.Value);//Console.ReadKey();#endregion#region 案例1////string msg = "1111。11。111。111111。";////Match match = Regex.Match(msg, "(.+)(。)");////Console.WriteLine(match.Value);////Console.WriteLine(match.Groups[1].Value + " " + match.Groups[2].Value);////Console.ReadKey();//string msg = "1111。11。111。111111。";////終止貪婪模式后的結(jié)果:1111。//Match match = Regex.Match(msg, ".+?。");//Console.WriteLine(match.Value);//Console.ReadKey();#endregion#region 案例2//string msg = "大家好。我們是S.H.E。我是S。我是H。我是E。我是葉長種。我是劉德華。我是范冰冰。我是小王。我是N.L.L。我是★小葉★。嗚嗚。fffff";////正確結(jié)果: S H E 葉長種 劉德華 范冰冰 小王 N.L.L ★小葉★////當(dāng)我們希望找到多個(gè)匹配的時(shí)候,結(jié)果卻只找到了一個(gè)很大的匹配值,這個(gè)時(shí)候一般都是貪婪模式的問題,嘗試終結(jié)貪婪模式。//MatchCollection matches = Regex.Matches(msg, "我是(.+?)。");//foreach (Match item in matches)//{// Console.WriteLine(item.Groups[1].Value);//}//Console.ReadKey();#endregion}} }?
正則表達(dá)式替換
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Text.RegularExpressions;namespace _04正則表達(dá)式替換 {class Program{static void Main(string[] args){//string msg = "你aaa好aa哈哈a你";//msg = msg.Replace("a", "A");////msg = Regex.Replace(msg, "a+", "A");//Console.WriteLine(msg);//Console.ReadKey();#region 練習(xí)1:將一段文本中的MM/DD/YYYY格式的日期轉(zhuǎn)換為YYYY-MM-DD格式 ,比如“我的生日是05/21/2010耶”轉(zhuǎn)換為“我的生日是2010-05-21耶”。//string msg = "我的生日是05/21/2010耶我的生日是03/11/2000耶我的生日是05/21/2010耶我的生日是05/21/2010耶";////在替換的方法中,使用提取組。 注意在引用分組的時(shí)候是使用 $1、$2、.....//msg = Regex.Replace(msg, @"(\d{2})/(\d{2})/(\d{4})", "$3-$1-$2");//Console.WriteLine(msg);//Console.ReadKey();#endregion#region 將hello ‘welcome’ to ‘China’ 替換成 hello 【welcome】 to 【China】////hello 【welcome】 to 【China】//string s = " hello 'welcome' to be'aut'iful 'China' fdsfds jfklds'jfdsk'lfjskl ";////如果就想表示一個(gè)普通的$1,則需要$$1//s = Regex.Replace(s, "'(.+?)'", "【$1】");//Console.WriteLine(s);//Console.ReadKey();#endregion#region 替換手機(jī)號(hào)的掩碼//string msg = "我的手機(jī)號(hào)碼是13888888888 蘇坤的手機(jī)號(hào)是18999165365。長15210998254的覺得是浪費(fèi)";//msg = Regex.Replace(msg, @"(\d{3})\d{4}(\d{4})", "$1****$2");//Console.WriteLine(msg);//Console.ReadKey();////string msg = "嘎哈發(fā)的睡覺了zxh@itcast.cn范德薩abcdef@yahoo.com范德薩nihaomahaha@sina.com.cn范德薩";//嘎哈發(fā)的睡覺了***@itcast.cn范德薩******@yahoo.com范德薩************@sina.com.cn范德薩#endregion#region 練習(xí)2:給一段文本中匹配到的url添加超鏈接,比如把http://www.test.com替換為<a href="http://www.test.com"> http://www.test.com</a>。參考代碼見備注。因?yàn)檫@個(gè)是整體做為一個(gè)組,比較特殊,難以理解,先把日期轉(zhuǎn)換的理解了就好理解了。//string msg = "新浪的網(wǎng)址是:http://www.sina.com.cn搜狐的網(wǎng)址是:http://www.sohu.com 還有網(wǎng)易的網(wǎng)址:http://www.163.com";////msg = Regex.Replace(msg, "([a-zA-Z0-9]+://[0-9a-zA-Z.&=\\?%]+)", "<a href=\"$1\">$1</a>");//msg = Regex.Replace(msg, "([a-zA-Z0-9]+://[0-9a-zA-Z.&=\\?%]+)", @"<a href=""$1"">$1</a>");//Console.WriteLine(msg);//Console.ReadKey();////新浪的網(wǎng)址是:<a href="http://www.sina.com.cn">http://www.sina.com.cn</a>搜狐的網(wǎng)址是:<a href="http://www.sohu.com">http://www.sohu.com<a>還有網(wǎng)易的網(wǎng)址:<a href="http://www.163.com">http://www.163.com</a>#endregion}} }?
?正則提取職位信息
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Text.RegularExpressions; using System.IO; using System.Net;namespace _05通過WebClient類來發(fā)起請(qǐng)求并下載html {class Program{static void Main(string[] args){#region 抓取網(wǎng)頁email//string url = "http://192.168.1.100:8080/提取Email.htm";////1.根據(jù)網(wǎng)址下載對(duì)應(yīng)html字符串//WebClient wc = new WebClient();//wc.Encoding = Encoding.UTF8;//string html = wc.DownloadString("http://192.168.1.100:8080/提取Email.htm");////2.從下載到字符串中提取Email,并把提取到的Email寫入到文本文件中//MatchCollection matches = Regex.Matches(html, @"[-a-zA-Z0-9_.]+@[-a-zA-Z0-9]+(\.[a-zA-Z0-9]+){1,}");//using (StreamWriter writer = new StreamWriter("email.txt"))//{// //遍歷提取到的email// foreach (Match item in matches)// {// //Console.WriteLine(item.Value);// writer.WriteLine(item.Value);// }//}//Console.ReadKey();#endregion#region 抓取網(wǎng)頁圖片//WebClient wc = new WebClient();////1.下載網(wǎng)頁源代碼//string html = wc.DownloadString("http://image.haosou.com/i?src=360pic_strong&q=美女");////2.提取網(wǎng)頁中的圖片,其實(shí)就是<img>標(biāo)簽////<img alt="" src="hotgirls/00_00.jpg" />//MatchCollection matches = Regex.Matches(html, @"<img\s+alt="""" src=""(.+)""\s*/>");//foreach (Match item in matches)//{// string imgPath = "http://image.haosou.com/i?src=360pic_strong&q=美女" + item.Groups[1].Value;// //下載圖片// wc.DownloadFile(imgPath, @"C:\Users\Administrator\Desktop\MV" + Path.GetFileName(imgPath));//}//Console.WriteLine("ok");//Console.ReadKey();#endregion#region 抓取職位信息//WebClient webClient = new WebClient();//string html = webClient.DownloadString("http://192.168.1.100:8080/【上海,IT-管理,計(jì)算機(jī)軟件招聘,求職】-前程無憂.htm");////<a href="http://search.51job.com/job/46621778,c.html" οnclick="zzSearch.acStatRecJob( 1 );" class="jobname" target="_blank">ERP項(xiàng)目經(jīng)理</a>//MatchCollection matches = Regex.Matches(html, @"<a\s+href=""http://search.51job.com/job/[0-9]{8},c.html"".+>(.+)</a>");//foreach (Match item in matches)//{// Console.WriteLine(item.Groups[1].Value);//}//Console.WriteLine("共{0}個(gè)職位信息。", matches.Count);//Console.ReadKey();#endregion}} }??
轉(zhuǎn)載于:https://www.cnblogs.com/yechangzhong-826217795/p/4157501.html
總結(jié)
以上是生活随笔為你收集整理的10---Net基础加强的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ORACLE系统表大全
- 下一篇: SQL Server 数据库所有者