前言
“不积跬步,无以至千里;不积小流,无以成江海”
2019年4月12日
(1)匹配字符以及索引。并最后将匹配到字符将其替换
MatchCollection通过检索集合的属性的值来访问对象的各个成员 ,同时利用Match类和MatchCollection类,可以获得通过一个正则表达式实现的每一个匹配的细节。
static void Main(string[] args)
{
//匹配字符,并索引出来,然后将它调换(查找替换)
string input = "a nihao haha shazi set" + "my name is ligang";
Console.WriteLine(input);
MatchCollection mc = Regex.Matches(input, @"ligang");
Console.WriteLine("共找到" + mc.Count + "个匹配");
foreach (Match s in mc)
{
Console.WriteLine("在索引" + s.Index + "处发现:" + s.Value);
}
Console.WriteLine("请输入要修改的字符值");
string names = Console.ReadLine();
string newname = Regex.Replace(input, "ligang", names);
Console.WriteLine("已经成功\n" + newname);
Console.ReadLine();
}
2019年4月13日
(2)匹配1A2B3C4D匹配符 group[0]cartrue[0]的使用
//要匹配的字符
string arr = "1A 2B 3C 4D ffee80 #80050";
//正则表达式
string zebds = @"((\d+)([a-z]))\s+";
//使用RegexOption.IgnorreCase枚举值表示不区分大小
Regex r = new Regex(zebds,RegexOptions.IgnoreCase);
//开始匹配字符串仅返回一次匹配结果
Match m = r.Match(arr);
//循环
while (m.Success) {
//显示匹配开始处索引值和匹配到的值
System.Console.WriteLine("Match=["+m+"]");
CaptureCollection cc = m.Captures;
foreach (Capture c in cc)
{
Console.WriteLine("\tCapture=["+c+"]");
}
for (int i = 0; i < m.Groups.Count; i++)
{
Group group = m.Groups[i];
System.Console.WriteLine("\t\tGroups[{0}]=[{1}]", i, group);
for (int j = 0; j < group.Captures.Count; j++)
{
Capture capture = group.Captures[j];
Console.WriteLine("\t\t\tCapture[{0}]=[{1}]", j, capture);
}
}
m = m.NextMatch();
}
Console.ReadLine();
2019年4月18日
(3)Math的简单使用
1)向上进位取整,只要小数点大于0.1(便返回该值最大限值)
Console.WriteLine(Math.Ceiling(32.1));
2)向下舍位取整,舍弃小数取整数
Console.WriteLine(Math.Ceiling(32.1));
3)【32,100】两数比较取最小值min(最大值max)
Console.WriteLine(Math.Min(32,100));
4)两数取商
Console.WriteLine(Math.DivRem(50, 2, out int a));
5)取该数的绝对值
Console.WriteLine(Math.Abs(-65));
6)取该数是否相等
Console.WriteLine(Math.Equals(10,10)); //取该数是否相等
2019年4月13日
(4)StringBuilder类的 Append(),Insert(),Remove()简单使用
string Digit = "张三";
StringBuilder SB = new StringBuilder(Digit);
Console.WriteLine(SB.Append("你好")); //显示“Append”张三你好,追加字符(添加)
Console.WriteLine(SB.Insert(2,"傻子")); //显示“Insert”张三傻子你好(从第几个字符开始插入,插入什么)
Console.WriteLine(SB.Insert(2, "傻子", 3)); //(从第几个字符开始插入,插入什么,插入几遍)
Console.WriteLine(SB.Remove(2,8)); //显示“Remove”张三你好,删除(从第几个开始删除,删除几个)
Console.WriteLine(SB.ToString()); //显示“Digit”字符串,表示当前对象
2019年4月20日
(5)Regex类及正则表达式的简单使用
1)验证是否为字母 不区分大小写
public bool VerifyLetter(string input)
{
if (!Regex.IsMatch(input, @"^[A-Za-z]+$", RegexOptions.IgnoreCase))
return false;else return true;
}
2)验证有效出生日期
protected bool DateTimebool(string vale)
{
if (!DateTime.TryParse(vale, out DateTime Reult))
{
return false;
}
else
{
return true;
}
}
3)验证有效1[358] 开头的电话号码
protected bool NumIPhone(string value)
{
Regex regx = new Regex(@"^1[358]\d{9}$", RegexOptions.Multiline);
if (!regx.IsMatch(value))
{
return false;
}
else
{
return true;
}
}
4)IsMath的用法 比如拥有 Regex reg = new Regex(“123456”);
IsMatch()”在此字符串中是否包含“123456”,返回值为 true/false。
//
bool b = a.IsMatch("你好你好123456");
“Match”匹配是否包含“123456”,如果包含那么将提取出来。
var c = a.Match("你好你好哈哈123456");
这里的Var类型,他是属于一个强类型的推断类型,他会根据右边的值来推断并确定自己本身是一个什么类型。
string arr = " 15173381510* ";
string d= arr.Replace("*", "#"); //“Replace”将里面字符调换,(“要调换的”,“调换值”)
string o = arr.Trim(); //“Trim”将字符串内的前后空格给删除
Regex aa = new Regex("151"); //查找“151”
var dd = aa.Replace(arr, "999", 2, 3); //(字符源,替换值,偷换几次,从第几个字符开始替换)
string pp = arr.Insert(0, "插入"); //“Insert”插入(从第几个字符开始插入,插入的值)
string letter = "AbCd";
Console.WriteLine(Regex.IsMatch(letter,"abcd",RegexOptions.IgnoreCase)); //静态验证是否有“abcd”字符,忽略大小写
RegEx类常用的方法
静态Match方法
使用静态Match方法,可以得到源中第一个匹配模式的连续子串。
静态的Match方法有2个重载,分别是
Regex.Match(string input, string pattern);
Regex.Match(string input, string pattern, RegexOptions options);
第一种重载的参数表示:输入、模式
第二种重载的参数表示:输入、模式、RegexOptions枚举的“按位或”组合。
RegexOptions枚举的有效值是:
Complied表示编译此模式
CultureInvariant表示不考虑文化背景
ECMAScript表示符合ECMAScript,这个值只能和IgnoreCase、Multiline、Complied连用
ExplicitCapture表示只保存显式命名的组
IgnoreCase表示不区分输入的大小写
IgnorePatternWhitespace表示去掉模式中的非转义空白,并启用由#标记的注释
Multiline表示多行模式,改变元字符^和$的含义,它们可以匹配行的开头和结尾
None表示无设置,此枚举项没有意义
RightToLeft表示从右向左扫描、匹配,这时,静态的Match方法返回从右向左的第一个匹配
Singleline表示单行模式,改变元字符.的意义,它可以匹配换行符
注意:Multiline在没有ECMAScript的情况下,可以和Singleline连用。Singleline和Multiline不互斥,但是和ECMAScript互斥。
静态的Matches方法
这个方法的重载形式同静态的Match方法,返回一个MatchCollection,表示输入中,匹配模式的匹配的集合。
静态的IsMatch方法
此方法返回一个bool,重载形式同静态的Matches,若输入中匹配模式,返回true,否则返回false。
可以理解为:IsMatch方法,返回Matches方法返回的集合是否为空。
2019年4月20日
(5)Datetime类的时间常用方法
Console.WriteLine("第"+DateTime.Now.Month+"月"); //显示今天第几月
Console.WriteLine(DateTime.Now.ToString()); //2019/4/12显示年月份加时间
//显示2019年4月星期5
Console.WriteLine(DateTime.Now.Year+"年"+DateTime.Now.Month+"月"+"星期"+Convert.ToInt16 (DateTime.Now.DayOfWeek));
Console.WriteLine(string.Format("{0:C}",10000)); //¥10,000.00
Console.WriteLine("购票时间{0}",DateTime.Now.ToShortTimeString()); //购票时间20:36
Console.WriteLine(DateTime.Now.ToLongDateString()); //2019年4月
Console.WriteLine(DateTime.Now.AddDays(-1)); //获取昨天日期
Console.WriteLine(DateTime.Now.AddYears(1)); //获取明年今日