發現真是太好用啦,趕緊記下來以免日後忘了。
首先要講個事件原由,
因為有個由使用者輸入的字串,
但字串中不能寫入特殊字元 "[" "]" "*" "%"
一般的寫法如下
If keyWord.Contains("[") Then keyWord = keyWord.Replace("[", "要取代的字串") End If If keyWord.Contains("]") Then keyWord = keyWord.Replace("]", "要取代的字串") End If '...略
萬一要取代的字串和特殊字元重疊,會造成前面置換成功的特殊字元再次被取代,
例如每個特殊字元的前後都要用 "[" "]" 包起來時
一般寫法如下:
If keyWord.Contains("[") Then keyWord = keyWord.Replace("[", "[[]") End If If keyWord.Contains("]") Then keyWord = keyWord.Replace("]", "[]]") End If '...略 '假設第一次的 Keyword 為 "select [abc] " '會被取代成 "select [[]abc] " '到第二個判斷式時, '要取代 "]" 時就會變成 "select [[[]]abc[]] " '這樣一來就全亂了。
這時有個解法,就是使用 Regular Expressions 的 Replace
前提是需引用 System.Text.RegularExpressions
講解一下參數的用法,
判斷式的寫法 (?<自定參數名稱>\跳脫字元)
這裡的 matchReplace 是參數名稱,也可以自己命名為 abc 或 def ...隨你高興
要置換的字元就是斜線後接的跳脫字元,
例如我想把字串中所有 "[" 符號的字全都替換成 "==[=="
可以寫成
若是連 "]" 也要換成 "==]==",
可以寫成
中間加入的 "|" 表示 or,也就是說我不管是 "[" 或是 "]" 我都要換成 "==[==" 或 "==]=="
當然要替換的字也不一定要包括原有符號
假設要將 "[" 換成 "^_^"
那就寫成
使用方式可參考線上 MSDN
同樣的 RegularExpressions 在 N++ 或是其它文書軟體都有類似的功能,
在大量替換(取代)特定資料時非常有用
例如 N++ 的說明中有一段範例,假設要把德國的年月日組合方式改成常用格式,做法如下
有木有呀,這裡的 Search 和 Replace 就有用到 Regular 的方式了。
善用 RegularExpressions 不但快速,還可以省下很多程式開發時間呢!!
沒有留言:
張貼留言