加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式与委托初探

发布时间:2020-12-14 01:43:09 所属栏目:百科 来源:网络整理
导读:正则表达式正则表达式是一种用于匹配、提取以及替换的格式化字符串。该字符串中包含原始匹配字符,以及一些表征其他意义的元字符。首先正则表达式是字符串其次包含正常字符然后包含元字符最后用于匹配、提取和替换基本元字符.:任意一个换行字符[]:集合匹配
正则表达式
	正则表达式是一种用于匹配、提取以及替换的格式化字符串。该字符串中包含原始匹配字符,以及一些表征其他意义的元字符。
	首先正则表达式是字符串
	其次包含正常字符
	然后包含元字符
	最后用于匹配、提取和替换
基本元字符
.:任意一个换行字符
[]:集合匹配,匹配一个[]中出现的字符
():调整优先级,还有一个分组的功能
|:或的意思,优先级最低(foot或food		foo(t|d))
限定元字符:
+:紧跟这个元素前面的元素出现1次或多次
*:紧跟这个元素前面的元素出现0次或多次
?:有或没有 (可以用于非贪婪模式  [123]+?)
{n}:紧跟这个元素前面的元素出现n次
{n,}
{n,m}
收尾元字符:
^:必须以某某字符开头,在[^]中表示否定
$:必须以某某结尾,分组后对组的引用($1)
简写元字符:
d:digit
w:word
s: space

-> C#中
		命名空间:System.Text.RegylarExpressions;
		Regex
		Match
		MatchCollection
	-> 四个模型
		bool Ragex.IsMatch(处理文本,正则表达式);
		Match Regex.Match(处理文本,正则表达式);
		MatchCollection Regex.Matches(处理文本,正则表达式);
		string Regex.Replace(处理字符串,正则表达式,替换字符串);
		
		static void Main(string[] args)
        {
            Match str = Regex.Match("13517247151",@"d{11}");
            if (str.Success) 
            {
                Console.WriteLine("匹配成功");
            }

            string content = File.ReadAllText("留下你的Email.htm",Encoding.UTF8);
            MatchCollection mc = Regex.Matches(content,@"([a-zA-Z0-9.]+)@(w+.w+)");
            foreach (Match m in mc)
            {
                Console.WriteLine("用户名:{0},域名:{1}",m.Groups[1].Value,m.Groups[2].Value);
            }

            string str1 = "1234";
            MatchCollection mcc = Regex.Matches(str1,@"d+");//d+?飞贪婪匹配

            string str2 = "今天是2014年7月2日";
            Console.WriteLine(Regex.Replace(str2,@"(d+)年(d+)月(d+)日","$1-$2-$3"));

        }
		
委托初探
	-> 将方法赋值给变量进行使用
	-> 使用委托步骤
		-> 1、先要有方法
		-> 2、定义委托的类型
			public delegate 返回值 委托的类型名(参数列表);
		-> 3、声明委托变量
			委托的类型名 变量名;
		-> 4、注册方法
			变量名 = 方法名;
		-> 5、将变量名看作方法的别名直接调用
			变量名();
			
namespace _01委托初探
{
    class Program
    {
        static void Main(string[] args)
        {
            Monitor monitor = new Monitor();
            Student stu = new Student();
            ConsoleKeyInfo keyInfo;
            while (true) 
            {
                keyInfo = Console.ReadKey();
                if (keyInfo.KeyChar != 'r') //不按回车时才委托
                {
                    stu.del = monitor.ReceiveEMS;
                }
                stu.ReceiveDel();//执行代理(不委托给我,我自己也可以执行)
            }
        }
    }
    delegate void DelReceive();//定义委托类型,类型安全(找个人收快递,我得信任他(方法的返回值跟参数必须要跟委托声明的一样))
    class Monitor 
    {
        public void ReceiveEMS() //收快递的方法
        {
            Console.WriteLine("班长收快递");
        }
    }
    class Student 
    {
        public DelReceive del;   //具有代理的能力
        public void ReceiveDel() //代理方法(不委托给我,我自己也可以执行)
        {
            if (del != null)
                del();
            else
                Console.WriteLine("我木有收到快递");
        }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读