今天~只有自己安排~

今天我慢下来啦,因为这三天没有新的课程学习内容,自己仅仅看啦一些,这让我停下来栖息片刻,于是想起来爸爸妈妈,想起啦家的味道,感觉好凄凉,我是一个恋家的女生,无论走到哪里都不会忘记时常回家的啦,喜欢和爸爸妈妈在一起,想起来爸爸妈妈逗我的感觉,就会更加的激动,我想我们都是在外面有啦一点小委屈就会想回家的吧,而我就是那个最习以为常的啦,每次有委屈就喜欢回家,无论什么事情给老爸老妈抱怨一下,所有的委屈就渐渐消失啦,好像回家;只是情绪小小激动一下下啦。

再说说现在的生活,简单的进行着,每天要奔波着去上课,然后回来,每天都在想怎样学习这个小知识点,大脑也在想怎样解决程序中的问题,每一天就是这样的开始,这样的结束;现在感觉:自己像一台电脑一样,难道被病毒入侵啦吗?但是这样的我仍然是快乐的,我因为兴趣而开始来习惯这样的生活的,所以一切的一切都是理所当然的,也是我已经预料到的,现在就是感觉有问题啦每次百度还是很难结局啊,不知道该怎么办,有点纠结,我的培训班的选择真的让我好失望啊,感觉社会是永远不会公平的,我们既然改变不了,就试着去接受吧。

下面就总结一下我今天学习的一些内容,今天学习啦一下怎样过滤敏感词的,由于之前我一个同学问我怎样去过滤文件中的敏感词,那时间做啦一下,但是做的结果不理想,现在就使用正则表达式来写一下啦。

一.敏感词的过滤

我们先创建一个窗体,然后在窗体上面拖拉两个控件,TextBox和Button,如下图所示:

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        List<string> mod = new List<string>();  //需要审核的,在这里我们定义一个泛型集合存储
        List<string> banned = new List<string>();//直接提示禁止使用的敏感词
        private void Form1_Load(object sender, EventArgs e)
        {
            string[] lines = File.ReadAllLines(@"F:\img\过滤词.txt", Encoding.Default);//在这里我们读取文件中的敏感词存放在一个数组中
            foreach (string line in lines)       //遍历出来每一项
            {
                Match match = Regex.Match(line, @"(.+)=\{(\w+)\}"); //在这里使用的是正则表达式进行匹配
                if (match.Success)   //在这里判断一下是否匹配成功
                {
                    string key = match.Groups[1].Value;//成功时间我们就把敏感词汇放在读出
                    string type = match.Groups[2].Value.ToLower();   //在这里是存储该敏感词的类型,是敏感词还是需要审核的词,要注意转换为小写,在这里容易出错的地方
                    if (type.Equals("mod"))
                    {
                        mod.Add(key);          //在这里是如果是mod类型的那么我们就记录一下,当发生按钮单击事件时我们可以提示
                    }
                    else if (type.Equals("banned"))
                    {
                        banned.Add(key);
                    }
                }
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string context = this.textBox1.Text;

            #region 字符串判断是否包含敏感词
            foreach (string key in banned)   //在这里有一个先后顺序,我们应该先判断是否含有敏感词
            {
                if (context.Contains(key))           //在这里需要注意的是:我们遍历出来的是key,一低昂判断的是是否包含key啦
                {
                    MessageBox.Show("此文章中含有敏感词,禁止发表");
                    return;
                }
            }
            foreach (string key in mod)   //在这里有一个先后顺序,我们应该先判断是否含有敏感词
            {
                if (context.Contains(key))
                {
                    MessageBox.Show("此文章中含有需要审核的词,我们需要审核");
                    return;
                }
            }
           #endregion

            #region 使用正则表达式判断
             //在这里需要注意我们的实际情况,例如:我们拿“教瘦”这个敏感词来说,我们可能会在它中间加一个空格.下划线等符号,然后使用字符串判断就可以成功,
            //而现在我们需要的是在其中添加任意符号,我们都是它禁止发表文章的啦,所以我们可以使用正则表达式来判断的啦

            //把集合中的关键词组合成 正则表达式   123|abc|aaa
            //string str = string.Join("|",banned.ToArray());
            //if (Regex.IsMatch(context, str, RegexOptions.Singleline)) //在这里是注意IsMatch,而第三个参数为单行模式,是因为当这个敏感词之间有换行模式也可以判断其为敏感词的啦
            //{
            //    MessageBox.Show("此文章中含有敏感词,禁止发表");
            //    return;
            //}
            //string strr = string.Join("|", mod.ToArray());
            //if (Regex.IsMatch(context, strr, RegexOptions.Singleline))
            //{
            //    MessageBox.Show("此文章中含有需要审核的词,我们需要审核");
            //    return;
            //}
            #endregion

            MessageBox.Show("发帖成功");
        }
    }

在上面我们一般使用字符串判断比较方便,但是不是很严谨的啦。所以我们一定要注意使用正则表达式的做法和我们需要根据实际情况需要考虑的。在做上面时间我根本就没考虑到会出现好多的情况的啦,但是在看啦人家的做法后自己对比啦一下知道自己考虑的太少啦。

二.XML的简单创建

XML:可扩展的标记语言; 优点:容易读懂;格式标准任何语言都内置了XML分析引擎,不用单独进行文件分析引擎的编写;XML语法规范:标签要闭合,属性值要用""包围,标签可以互相嵌套;大小写敏感;XML和HTML的区别:XML中元素必须关闭!XML中元素的属性值必须用引号。

下面就简单的总结下在XML文件中创建XML文件和在调用方法创建XML文件啦。

1.XML文件中创建XML文件

<?xml version="1.0" encoding="utf-8" ?>
<Books>
  <Book>
    <Name>c#图解教程</Name>
    <Price>10</Price>
  </Book>
  <Book>
    <Name>c#图解教程2</Name>
    <Price>20</Price>
  </Book>
  <Book>
    <Name>c#图解教程3</Name>
    <Price>30</Price>
  </Book>
  <Book>
    <Name>c#图解教程4</Name>
    <Price>20</Price>
  </Book>
</Books>

在这里我们需要注意的是:第一行version="1.0"是版本号啦,而encoding="utf-8" 则是编码方式啦,而为什么在这里需要拿出来记忆一下那,主要是因为我们在使用类创建XML文件时,这个是要自己添加的啦,嘿嘿。

2.下面就总结一下使用方法创建XML文件啦。

static void Main(string[] args)
        {
            //实例化一下内存中的xml文件
            XmlDocument xd = new XmlDocument();
            if (File.Exists("XMLFile1"))
            {
                xd.Load("XMLFile1");        //加载文件
                XmlElement books = xd.DocumentElement;  //xml文档中的根节点,文件存在,找到根节点books,在他下面添加book节点

                XmlElement book = xd.CreateElement("Book");    //book标签
                books.AppendChild(book);

                XmlElement name = xd.CreateElement("Name");
                name.InnerText = "c#图解教程";
                book.AppendChild(name);

                XmlElement price = xd.CreateElement("Price");
                price.InnerText = "10";
                price.AppendChild(price);
            }
            else                          //当不包含文件的时间我们可以自己创建
            {
                XmlDeclaration xmll = xd.CreateXmlDeclaration("1.0","utf-8",null);   //创建文件的第一行,即版本号,编码方式
                xd.AppendChild(xmll);

                XmlElement books = xd.CreateElement("Books");    //添加根节点 Books
                xd.AppendChild(books);                       //添加文档中

                XmlElement book1 = xd.CreateElement("Book");       //添加book节点  第一本书
                books.AppendChild(book1);

                XmlElement name1 = xd.CreateElement("Name");      //添加Name节点

                name1.InnerText = "<b>c#图解教程</b>";  //InnerText  如果内容中有<>  会自动转义;
                //name1.InnerXml = "<b>c#图解教程</b>";   //InnerXml  <>不转义  作为标签
                book1.AppendChild(name1);

                XmlElement price1 = xd.CreateElement("Price");  //添加价格Price
                price1.InnerText = "10";
                book1.AppendChild(price1);

                XmlElement book2 = xd.CreateElement("Book");     //添加book节点  第二本书
                books.AppendChild(book2);

                XmlElement name2 = xd.CreateElement("Name");         //Name
                name2.InnerText = "c#图解教程2";
                book2.AppendChild(name2);

                XmlElement price2 = xd.CreateElement("Price");       //Price
                price2.InnerText = "20";
                book2.AppendChild(price2);

                XmlElement book3 = xd.CreateElement("Book");
                book3.InnerXml = "<Name>c#图解教程3</Name><Price>30</Price>";   //而InnerXml可以字节添加多个标签
                books.AppendChild(book3);
            }
            xd.Save("books.xml");        //保存文档
            Console.ReadKey();
        }

在学习这个敏感词过滤,感觉思想上面理解,但是还是没有很好地写出来啦,正则表达式也是我们的基础,虽然不常用吧,但是我看啦一个公共类库里面好像还是有使用正则表达式处理文件和图片的啦,所以我们还是必须要知道的啦,这些对于我来说,和前面学习的C#基础相比起来真的是有点进一步啦,这个需要我熟练地掌握啦,首先感觉处理敏感词这个以后也会用到的啦,所以感觉很有兴趣学习的啦。

而XML文件之前一直在迷茫,这是什么东东啦,感觉很难得感觉,那时间在项目中看到这个,都是好奇心啦,打开啦也没看懂他是干嘛的,那时间也没使用上它,所以百度都没有查看他的啦,现在好啦,终于知道啦,嘿嘿,感觉很高兴啦,突然发现知道啦一个新的知识点感觉不错啦,以后会多动手查看自己不知道的问题啦,而且要多练习的啦。

好啦,今天就总结到这里吧,其实刚开始心情有点沉重,这里每次停电,恐怖。。。而且上课去也没有老师。。。感觉很不好啦,不过现在还好啦,嘿嘿,有啦光明而且问题也解决啦。

时间: 2024-07-29 05:12:05

今天~只有自己安排~的相关文章

九度oj 题目1499:项目安排

题目描述: 小明每天都在开源社区上做项目,假设每天他都有很多项目可以选,其中每个项目都有一个开始时间和截止时间,假设做完每个项目后,拿到报酬都是不同的.由于小明马上就要硕士毕业了,面临着买房.买车.给女友买各种包包的鸭梨,但是他的钱包却空空如也,他需要足够的money来充实钱包.万能的网友麻烦你来帮帮小明,如何在最短时间内安排自己手中的项目才能保证赚钱最多(注意:做项目的时候,项目不能并行,即两个项目之间不能有时间重叠,但是一个项目刚结束,就可以立即做另一个项目,即项目起止时间点可以重叠). 输

BZOJ1725: [Usaco2006 Nov]Corn Fields牧场的安排

1725: [Usaco2006 Nov]Corn Fields牧场的安排 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 400  Solved: 290[Submit][Status] Description Farmer John新买了一块长方形的牧场,这块牧场被划分成M列N行(1<=M<=12; 1<=N<=12),每一格都是一块正方形的土地.FJ打算在牧场上的某几格土地里种上美味的草,供他的奶牛们享用.遗憾的是,有些土地相当的贫

NOJ 1163 活动安排问题 [动态规划]

活动安排问题 时间限制(普通/Java) : 3000 MS/ 9000 MS 运行内存限制 : 65536 KByte总提交 : 202            测试通过 : 55 比赛描述 设有n个活动的集合E={1,2,--,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源.每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si<fi.如果选择了活动i,则它在时间区间[si,fi]内占用资源.若区间[si,fi]与区间[sj,fj

洛谷P1160 队列安排 链表

洛谷P1160 队列安排   链表 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <cstdlib> 5 #include <string> 6 #include <algorithm> 7 #include <iomanip> 8 #include <iostream> 9 using namespace std

关于计应151/152《软件工程》课程实践的安排

通过前一阶段的准备,同学们已经掌握了软件开发流程的相关知识,尽管部分知识有待后续课程解决,但已经具备开始实践的必要知识,因此,从下周一开始,我们的课程实践项目正式开始.具体安排如下: 1.整个开发活动以小组展开,在每一周结束时,小组要提交经过小组实践行动形成的文档,文档内容由我在班级博客上发布,并通过小组长的博客发布,标题格式为:计应XX班第X小组XXX(文档内容标题).文档的具体书写格式和小组的活动方式请参考教材有关章节的内容,这些我会在每次小组作业安排时提示. 2.每个小组成员,根据自己在参

【贪心】电视节目安排

问题 W: [贪心]电视节目安排 时间限制: 1 Sec  内存限制: 64 MB提交: 22  解决: 16[提交][状态][讨论版] 题目描述 李旭琳发现小墨老师在班上是最顽劣的学生(没有之一),但他也有安静的时候,例如在看电视的时候.像什么“谍战剧”啊,“翻拍剧”啊,“婆媳戏”啊,“后宫剧”啊都是他的最爱.他甚至会事先查询所有喜欢看的电视节目的转播时间表并煞有介事的用红蓝铅笔列出计划,然后合理安排,以看到尽量多的完整节目. 输入 输入数据包含多个测试实例,每个测试实例的第一行只有一个整数n

51nod 1428 活动安排问题(优先队列)

1428 活动安排问题 首先按照开始时间从小到大排序. 其实只要维护一个结束时间的最小堆,每次比较开始时间和堆中最小时间的大小,如果比它大就放入堆中并且时间就要变成当前任务的结束时间, 否则就要新开一个教室.并且把结束时间加入堆中,注意判断堆是否为空. #include <cstdio> #include <cstring> #include <queue> #include <algorithm> using namespace std; struct p

BZOJ 2726: [SDOI2012]任务安排( dp + cdq分治 )

考虑每批任务对后面任务都有贡献, dp(i) = min( dp(j) + F(i) * (T(i) - T(j) + S) ) (i < j <= N)  F, T均为后缀和. 与j有关的量只有t = dp(j) - F(i) * T(j) , 我们要最小化它. dp(j)->y, T(j)->x, 那么y = F(i) * x + t, 就是给一些点和一个斜率...然后最小化截距, 显然维护下凸包就可以了. 然后因为无比坑爹的出题人....时间可以为负数, 所以要用平衡树维护(

FZU5BOYS-Beta版本冲刺计划及安排

1.下一阶段需要改进完善的功能 话题模块(分类参考Citeulike论文网站),文章/计划的删除功能 2.下一阶段新增的功能 1)推荐模块(冷启动问题,拟爬取部分豆瓣数据,部分伪专家数据(我们团队), 2)基于ItemCF的协同过滤), 3)聊天模块(bmob) , 4)评论功能(Star,comment) 3.需要改进的团队分工(针对之前的不足,需要加强和改进团队协作和分工的地方) 1)让对java不是很熟悉的队友先做xml布局,然后研究button的click事件,对于bundle,inte

房间安排

描述 2010年上海世界博览会(Expo2010),是第41届世界博览会.于2010年5月1日至10月31日期间,在中国上海市举行.本次世博会也是由中国举办的首届世界博览会.上海世博会以“城市,让生活更美好”(Better City,Better Life)为主题,将充分探索21世纪城市生活. 这次世博会总投资达450亿人民币,创造了世界博览会史上的最大规模记录.吸引200个国家和国际组织参展.预计有7000万人次的参观者. 为了更好地接待在这期间来自世界各地的参观者,如何合理安排各宾馆的住房问