參考文章
//http://coding.anyun.tw/2011/03/11/regex-matchs-and-replace-word/
//C# 使用正規表示式搜尋和取代
//正規表示式(或稱正則表示式)
//在程式語言上一個很方便做字串處理的方式,
//本文主要是介紹在 C# 中要怎麼做搜尋和取代字串,
//每次都會忘記,給自己做個筆記一下囉!
//===============================
//http://coding.anyun.tw/2011/03/11/regex-matchs-and-replace-word/
//C# 使用正規表示式搜尋和取代
//正規表示式(或稱正則表示式)
//在程式語言上一個很方便做字串處理的方式,
//各種程式語言也都有支援,
//隻是它的規則撰寫是需要花點時間學習的,
//但是網路上可以找到許多的工具和網站都可以協助我們來寫規則式,
//這部份就不再多說了。
//本文主要是介紹在 C# 中要怎麼做搜尋和取代字串,
//每次都會忘記,給自己做個筆記一下囉!
//===============================
using System;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;//使用Regex.Replace取代
//================================
string 刪_空格=Regex.Replace("A A A",@" ","");//"AAA"
//--------------------------------
//刪_只留16進位,只留數字+abcdef,剩下刪除
//string 字串1=刪.只留16進位("ABCD EFG HIJK"); //字串1="ABCDEF"
//string 字串2=刪.只留16進位("abc def ghijk"); //字串2="abcdef"
//string 字串3=刪.只留16進位("0123456789"); //字串3="0123456789"
//string 字串4=刪.只留16進位("JAKBLC jakblc"); //字串4="ABCabc"
//--------------------------------
public static string 只留16進位(string 來源) {
// string 非負數字 = @"^\d+[.]?\d*$";
// string 數字 = @"^\d+(\.)?\d*$";
// string 非負整數 = @"^\d+$";
// string 整數 = @"^-?\d+$";
// string 負整數 = @"^-[0-9]*[1-9][0-9]*$";
// string 正整數 = @"^[0-9]*[1-9][0-9]*$";
// string 非正整數 = @"^((-\d+)|(0+))$";
// string 頭空白= @"^\s+"; //頭空白,用【來源.TrimStart()】取代了
// string 尾空白= @"\s+$"; //尾空白,用【來源.TrimEnd()】取代了
// string 頭尾空白= @"^\s+|\s+$"; //頭空白,用【來源.Trim()】取代了
// string 串首尾空格= @"^ +| +$|^\t+|\t+$";//刪_整個字串的_【空格】【/t】
// string 字首尾空格= @"\r\n +| +\r\n|\r\n\t+|\t+\r\n";//刪_【\r\n】前後的_【空格】【/t】
// string 非16進位 = @"[^A-Fa-f0-9]";
// string 非16進位_與空格 = @"[^A-Fa-f0-9 ]";//小心9後面有一空格
string 非16進位 = @"[^A-Fa-f0-9]";
return Regex.Replace(來源,非16進位,"");
}//只留16進位()__結束
//--------------------------------
//string 字串1=刪.只留10進位("12AB34CD E56FG 78 HIK9"); //字串1="123456789"
//--------------------------------
public static string 只留10進位(string 來源) {
string 非10進位 = @"[^0-9]";
return Regex.Replace(來源,非10進位,"");
}//只留10進位()__結束
//--------------------------------
//刪_只留16進位,只留數字+abcdef+空格,剩下刪除
//string 字串1=刪.只留16進位_與空格("ABCD EFG HIJK"); //字串1="ABCD EF"
//string 字串2=刪.只留16進位_與空格("abc def ghijk"); //字串2="abc def "
//string 字串3=刪.只留16進位_與空格("0123456789"); //字串3="0123456789"
//string 字串4=刪.只留16進位_與空格("JAKBLC jakblc"); //字串4="ABC abc"
//--------------------------------
public static string 只留16進位_與空格(string 來源) {
string 非16進位_與空格 = @"[^A-Fa-f0-9 ]";//小心9後面有一空格
return Regex.Replace(來源,非16進位_與空格,"");
}//只留16進位_與空格()__結束
//--------------------------------
//只留1空格
//步驟 1-TAP當空格,2-頭尾空格刪掉,3-所有2空格,改成1空格
//string 字串1=刪.只留1空格("01234567890123456"); //字串1="01234567890123456"
//string 字串2=刪.只留1空格(" AA BB CC "); //字串1="AA BB CC"
//string 字串3=刪.只留1空格(" AA BB CC "); //字串1="AA BB CC"
//--------------------------------
public static string 只留1空格(string 來源) {
string 輸出=字串.TAP當空格(來源);
輸出=頭尾空格(輸出);
while(Regex.IsMatch(輸出," ")){ 輸出=Regex.Replace(輸出," "," ");}
return 輸出;
}//只留1空格()__結束
//===============================
//http://programdoubledragon.blogspot.com/2013/08/c13.html
//基本概念:
//■跳脫字元(Character Escapes)
// 某些字元代表的特殊意義,例如: * 、$等等
//■分類字元(Character Classes)
// 比對某種類型的字元,
// 例如:[0-9]會將比對輸入的字串是否為數字、
// [dog]會將比對輸入的字串是否為d、o和g的字母。
//■數量符號: (Quantifiers)
// 用以指定所套用的樣式於字串,
// 比對字串或是字元出現的次數。
// Ex: 5{2}找到55的字串
//■規則運算(Regular Expression Options)
// 搜尋以及比對樣式
//■置換(Substitutions)
// 取代功能
//===============================
//
//
//
//@符號=逐字識別項,表示要逐字解譯字串常值。@符號會定義「逐字字串常值」
//在字串裡,有些符號有特殊意義,不能單放,加上,前置@符號,
//1-簡單逸出序列 (例如 "\\" 用於反斜線)、
//2-十六進位逸出序列 (例如 "\x0041" 用於大寫 A),
//3-Unicode 逸出序列 (例如 "\u0041" 用於大寫 A) 都是照字面解譯。
//4-引號逸出序列 ("") 不照字面解譯,它會產生單引號。
//5-大括弧逸出序列 ({{ 和 }}),它們會產生一個大括弧字元。註VS2015才有作用
//例:【\】不能單放
string filename1 = @"c:\documents\files\u0066.txt"; //c:\\documents\\files\\u0066.txt
string filename2 = "c:\\documents\\files\\u0066.txt"; //c:\\documents\\files\\u0066.txt
//string filename3 = "c:\documents\files\\u0066.txt"; //組譯錯誤,無法辨認的逸出序列
string AT1 = "\x0041"; //"A"
string AT2 = @"\x0041"; //"\\x0041"
string AT3 = "\u0041"; //"A"
string AT4 = @"\u0041"; //"\\u0041"
string BT1 = "{"; string BT2 = @"{"; //"{",註VS2015才有作用,這裡是VS2010結果
string BT3 = "{{"; string BT4 = @"{{"; //"{{",註VS2015才有作用,這裡是VS2010結果
string BT5 = "{}"; string BT6 = @"{}"; //"{}",註VS2015才有作用,這裡是VS2010結果
string BT7 = "{{}}";string BT8 = @"{{}}"; //"{{}}",註VS2015才有作用,這裡是VS2010結果
//=========================
string 來源=" AB C SDsE ";//="__AB_C_SDsE__"=空格,用底線比較方便看,以下相同
string 來源2="AB C SDsE "; //="AB_C_SDsE__"=空格,用底線比較方便看,以下相同
//符號【@】=逐字字串常值,
string SS1= Regex.Replace(來源,@"s",""); //小寫s,"__AB_C_SDE__"
string SS2= Regex.Replace(來源,@"S",""); //大寫S,"__AB_C_DsE__"
//符號【\】=特殊符號,
//\s=小寫=空白字元=等效[ \f\n\r\t\v]
//\S=大寫=非空白字元,等效[^ \f\n\r\t\v]
//f=換頁符號,n=換行符號,r=回車符號,t=定位字元,v=垂直定位
string CC1= Regex.Replace(來源,@"\s",""); //小寫s,"ABCSDsE"
string CC2= Regex.Replace(來源,@"\S",""); //大寫S,"______"=6空格,用底線比較方便看,以下相同
//符號【[]】=包含,所有符合的狀況,
string CC3= Regex.Replace(來源,@"[ \r\t\n\f]",""); //等效 ,"ABCSDsE"
string CC4= Regex.Replace(來源,@"[^ \r\t\n\f]",""); //等效 ,"______"=6空格
//承上,如果沒包含的話,即是要完全符合,它才會取代
string CC5= Regex.Replace(來源,@" \r\t\n\f",""); //"__AB_C_SDsE__"
string CC6= Regex.Replace(來源,@"^ \r\t\n\f",""); //"__AB_C_SDsE__"
string CC7= Regex.Replace(@"AA \r\t\n\fBB",@" \r\t\n\f",""); //"AA \\r\\t\\n\\fBB"
string CC8= Regex.Replace(@"AA \r\t\n\fBB",@"^ \r\t\n\f",""); //"AA \\r\\t\\n\\fBB"
//符號【^】=開頭
string DD1= Regex.Replace(來源,@"^\s",""); //小寫s,"_AB_C_SDsE__"
string DD2= Regex.Replace(來源,@"^\s+",""); //小寫s,"AB_C_SDsE__"
string DD3= Regex.Replace(來源,@"^\S",""); //大寫S,"__AB_C_SDsE__"
string DD4= Regex.Replace(來源,@"^\S+",""); //大寫S,"__AB_C_SDsE__"
string DD5= Regex.Replace("AB C SDsE ",@"^\S",""); //大寫S,"B C SDsE "
string DD6= Regex.Replace("AB C SDsE ",@"^\S+","");//大寫S," C SDsE "