序文
「歩数を積み上げないと千マイルに到達できません。小さな流れを積み上げないと川になれません」
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マッチングシンボルグループ[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)数学の簡単な使用
1)小数点が0.1より大きい場合は、整数に切り上げます(値の上限が返されます)。
Console.WriteLine(Math.Ceiling(32.1));
2)整数に切り捨て、小数を整数に破棄します
Console.WriteLine(Math.Ceiling(32.1));
3)[32,100] 2つの数値を最小値min(最大値max)と比較します
Console.WriteLine(Math.Min(32,100));
4)2つの数値の商を取ります
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)Regex reg = new Regex( "123456");を所有するなどのIsMathの使用法。
IsMatch() "のこの文字列に" 123456 "が含まれているかどうかに関係なく、戻り値はtrue / falseです。
//
bool b = a.IsMatch("你好你好123456");
「一致」は「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メソッドを使用すると、ソース内の一致するパターンの最初の連続サブストリングを取得できます。
マッチ方法は二つの静的なオーバーロードを有している
Regex.Match(入力文字列、文字列パターン);
Regex.Match(入力文字列、文字列パターン、RegexOptionsオプション);
第一の過負荷パラメータが表す:入力モード
のを2つのオーバーロードされたパラメーター表現:入力、モード、およびRegexOptions列挙の「ビット単位のOR」の組み合わせ。
RegexOptions列挙の有効な値は次のとおりです:Complied
は、このモードがコンパイルされることを意味します。CultureInvariantは
、文化的背景が考慮されない
ことを意味します。ECMAScriptは、ECMAScriptに準拠することを意味します。この値は、IgnoreCase、Multiline、およびCompliedと組み合わせてのみ使用できます。ExplicitCaptureは、
明示的に名前が付けられたグループのみが保存さ
れることを意味します。 Case
IgnorePatternWhitespaceは、パターン内のエスケープされていない空白を削除し、#でマークされたコメントを有効にする
ことを意味します。複数行は複数行モードを意味します。メタ文字^および$の意味を変更します。これらは行の最初と最後に一致できます
。Noneは設定がないことを意味します。意味がありません
。RightToLeftは右から左にスキャンして照合することを意味します。このとき、静的なMatchメソッドは右から左に最初の一致を返し
ます。単一行は単一行モードを意味します。メタ文字の意味を変更します。新しい行の文字と照合できます。
注:マルチラインは、ECMAScriptなしでシングルラインと組み合わせて使用できます。シングルラインとマルチラインは相互に排他的ではありませんが、ECMAScriptと相互に排他的です。
静的一致メソッド
このメソッドのオーバーロードされた形式は静的Matchメソッドと同じであり、入力内の一致するパターンのセットを表すMatchCollectionを返します。
静的IsMatchメソッド
このメソッドはboolを返し、オーバーロードされた形式は静的一致と同じです。入力がパターンに一致する場合は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)); //获取明年今日