正则表达式匹配读取网页的时候
href="(.+?)" //尽可能匹配
href="([^"]+)"//不包含引号的匹配
如果是这样<a href="baidu.com"></a><a href="hao123.com"> </a>
涉及到非开发模式的是后会影响一定的效率,所以使用href="([^"]+)"//不包含引号的匹配会好一些
static void Main(string[] args) { //读取文件内容,不加Encoding.Default时会乱码 string names = File.ReadAllText("百家姓.txt",Encoding.Default);//文件内容全部读取 //正则表达式 string regex = @"△(.+)"; MatchCollection ms = Regex.Matches(names,regex); foreach (Match m in ms) { if (m.Success) { Console.WriteLine(m.Groups[1].Value); } } Console.ReadKey(); }
1.var介绍
会根据第一次赋值确定类型
注:
->声明是必须赋值
->并且不是复制后还可改变,只是由于第一次赋值由编译器根据值为变量确定类型
->在程序中一般少用var(在linQ中会常用到),通篇var不利于代码的维护
->不允许定义时,不确定类型
在定义数组的时候 var num=new int[]{1,2};
2.匿名类型(*)
在某些特定的技巧中会使用到匿名类型,其类型带有很强的灵活性,主要是配合查询结果,绑定数据
语法:
var obj = new
{ //成员--只能写属性
}
3.初始化器
回忆数组如何定义初始化?
int[] nums = new int[3] {1,2,3};
int[] nums = new int[] {1,2,3};
int[] nums={1,2,3};
数组语法
int[] nums=new int[10];
for(int i=0;i<nums.Lenght;i++)
{
nums[i]=....
}
在定义时int[] nums = new int[3] {1,2,3};后面的{1,2,3};就是一个初始化器
初始化器
数组有,(int[] nums = new int[3] {1,2,3};)
class Program { static void Main(string[] args) { //1.集合--初始化器 List<int> list = new List<int>() {1,2,3,4,5,6,7,8,9,0 }; //2.类--初始化器 //对应构造方法 Person p = new Person() { Name = "张三", Gender ='男', Age = 18 }; //自动属性 List<Test> listTest = new List<Test>(); listTest.Add(new Test() { Name = "张三" }); //3结构--初始化器 MyPoint point = new MyPoint() { X = 10, Y = 20 }; } } //构造方法创建类 class Person { protected string _name; protected int _age; protected char _gender; public Person(int age,string name,char gender) { _name = name; _age = age; _gender = gender; } public Person() { } public string Name { get { return _name; } set { _name = value; } } public int Age { get { return _age; } set { _age = value; } } public char Gender { get { return _gender; } set { _gender = value; } } } //没有构造方法,只有自动属性 class Test { public string Name{ get; set; } } //结构 struct MyPoint { public int X; public int Y; } }
4.扩展方法
方法中带向下小箭头的方法-----是外部添加的方法(理解为自己添加的方法)
语法
-》 静态类与静态方法
-》方法第一个参数为对象参数
记住一个字符串匹配的例子emall
未完,,等待书写