前端之家收集整理的这篇文章主要介绍了
正则表达式与委托初探,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
正则表达式
正则表达式是一种用于匹配、提取以及替换的格式化字符串。该字符串中包含原始匹配字符,以及一些表征其他意义的元字符。
首先正则表达式是字符串
其次包含正常字符
然后包含元字符
最后用于匹配、提取和替换
基本元字符
.:任意一个换行字符
[]:集合匹配,匹配一个[]中出现的字符
():调整优先级,还有一个分组的功能
|:或的意思,优先级最低(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("我木有收到快递");
}
}
}