20131128-正则表达式与委托

[1]网页提取职位信息

namespace 下载职位信息

{

class Program

{

static void Main(string[] args)

{

WebClient wc = new WebClient();

wc.Encoding = Encoding.Default;

string webAddress = "http://localhost:8080/【上海,IT-管理,计算机软件招聘,求职】-前程无忧.htm";

string strRegex = @"<a\s*href=""http://search.51job.com/job/\d{8},c.html"".+>(.+)</a>";

MatchCollection mat = GetWebInfo(wc, webAddress, strRegex);

foreach (Match item in mat)

{

if (item.Success)

{

Console.WriteLine(item.Groups[1].Value);

}

}

Console.WriteLine(mat.Count);

Console.ReadKey();

}

public static MatchCollection GetWebInfo(WebClient wc,string webAddress,string strRegex) {

string html = wc.DownloadString(webAddress);

Regex regex=new Regex(strRegex);

MatchCollection mat = regex.Matches(html);

return mat;

}

}

}

[2]UBB翻译案例

namespace UBB翻译案例

{

class Program

{

static void Main(string[] args)

{

string str = "听说这个论坛是[color=green]小虎[/color]做的.他是[url=http://www.itcast.cn/]传智播客[/url]";

str = Regex.Replace(str, @"\[url=(.+)\](.+)\[/url\]", "<a href=\"$1\">$2</a>");

Console.WriteLine(str);

Console.ReadKey();

}

}

}

[3]敏感词过滤

namespace 敏感词过滤

{

/*mgc.txt格式

成人午夜场={BANNED}

成人小说={BANNED}

出售={MOD}

*/

public partial class Form1 : Form

{

//审核

StringBuilder sbMod = new StringBuilder();

//禁止

StringBuilder sbBanned = new StringBuilder();

public Form1()

{

InitializeComponent();

}

 

private void button1_Click(object sender, EventArgs e)

{

string txt = textBox1.Text;

if (Regex.IsMatch(txt,sbBanned.ToString()))

{

MessageBox.Show("禁止发帖");

}

else if (Regex.IsMatch(txt,sbMod.ToString()))

{

MessageBox.Show("需要审核");

}

else

{

textBox2.Text = txt;

}

}

 

private void Form1_Load(object sender, EventArgs e)

{

//创建存储敏感词的对象

string[] lines = File.ReadAllLines("mgc.txt", Encoding.Default);

for (int i = 0; i < lines.Length; i++)

{

string[] words = lines[i].Split(new char[] { ‘=‘ }, StringSplitOptions.RemoveEmptyEntries);

if (words[1] == "{BANNED}")

{

//拼接一个超级正则表达式

sbMod.Append(words[0] + "|");

}

//拼接一个超级正则表达式

else if (words[1] == "{MOD}")

{

sbBanned.Append(words[0] + "|");

}

}

sbMod.Remove(sbMod.Length - 1, 1);

sbBanned.Remove(sbBanned.Length - 1, 1);

}

}

}

[4]委托计算

namespace 委托计算2

{

class Program

{

//A

static void Main(string[] args)

{

// string [] strs=new string[3];

string[] strs = {"qwe","df","lyui" };

//Step4: 调用BMethod2(),参数包含A类中的Method1

ChangeStr cs = new ChangeStr();

cs.ChangeString(strs, AddString);

for (int i = 0; i < strs.Length; i++)

{

Console.WriteLine(strs[i]);

}

Console.ReadKey();

}

//Step1: A 方法Method1()

private static string AddString(string str)

{

return "====" + str + "===";

}

}

//Step2: A类提供的方法定义为委托

public delegate string MyDelegateChangStr(string str);

//Step3: B Method2(arg*, Delegate mdl);

// 此时A中的方法可被B类带到任意处调用

public class ChangeStr

{

public void ChangeString(string [] strs,MyDelegateChangStr mdl)

{

for (int i = 0; i < strs.Length; i++)

{

strs[i] = mdl(strs[i]);

}

}

}

}

[5]两窗体传值

namespace 窗体传值2

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

 

private void button1_Click(object sender, EventArgs e)

{

//Step4:fm1textBox的值传给fm2,并且将改变本类textBox值得方法作为委托方法传给fm2

Form2 fm2 = new Form2(textBox1.Text, ChuanZhi);

fm2.Show();

}

//Step1: A类给本类textBox赋值的方法

private void ChuanZhi(string txt)

{

textBox1.Text = txt;

}

}

//Step2: A类的赋值的方法定义为委托

public delegate void MyDelegate(string txt);

}

 

namespace 窗体传值2

{

public partial class Form2 : Form

{

//定义一个委托属性存放传递过来的委托

MyDelegate _mdl;

public MyDelegate Mdl

{

get { return _mdl; }

set { _mdl = value; }

}

public Form2()

{

InitializeComponent();

}

//Step3 重写窗体2构造函数,fm1-->fm2完成textBox传值;完成委托传递

public Form2(string txt, MyDelegate mdl)

: this()

{

textBox1.Text = txt;

this.Mdl = mdl;

}

private void button1_Click(object sender, EventArgs e)

{

//Step5: 完成fm1<---fm2传值

this.Mdl(textBox1.Text);

this.Close();

}

}

}

20131128-正则表达式与委托

上一篇:Kafka发送超过broker限定大小的消息时Client和Broker端各自会有什么异常?


下一篇:互联网广告学——程序化购买