我最近遇到了需要把接收到的垃圾 string ,要把某個區間的字串給刪掉但卻苦無找不到辦法
後來詢問了一下老友才得知,如果需要取代某一塊區間的資料並須使用 Regex(正規表示式) 😰😰
這....真的考倒我了,我對Regex(正規表示式) 理解超少使用的範圍又僅限於數字跟英文字...
後來我得知了 https://rubular.com/
這真的救了我,話不多說直接切入正題
我現在要把一串string的一部分取代成為空字串(如下)
string r1 = @"
{
'responseCode': '0000',
'responseData': [
{
'arrived_datetime': '2020/07/01 16:53',
'link_url': 'https://xxxx.xxx.com/estore/xxxx/xxxSearch?cid={'act':'orderSearch','oid':'sdfsd','rid':'fsdf'}&tid={tid}',
'order_amount': 650,
'order_datetime': '2020/06/22 16:52',
'order_id': 'HQ200622318753',
'order_status': '訂單取消',
'source_name': '網路門市',
'title_name': '訂單編號'
}
],
'responseNote': '成功'
}
";
我需要取代 {'act':'orderSearch','oid':'sdfsd','rid':'fsdf'}&tid={tid} 的一段的內容為string.Empty
當然我可以直接replace取代,但因為這一塊裡面的內容物變數會取代所以我規範的範圍是
{'act 到 ={tid} 這之間的所有內容,在朋友的指示下測試了一下 Rubular
恩....結果很是滿意(反白的部分就是他會依據 your regular expression 的規則來做區間判別)
搞定了正規表示式以後直接拿剛剛,整理出來的正規表示式來取代
string Pattern = "{'act.+={tid}";
Regex regex = new Regex(Pattern);
r1 = regex.Replace(r1, "");
然後最後的結果會變成
{
'responseCode': '0000',
'responseData': [
{
'arrived_datetime': '2020/07/01 16:53',
'link_url': 'https://xxxx.xxx.com/estore/xxxx/xxxSearch?cid=',
'order_amount': 650,
'order_datetime': '2020/06/22 16:52',
'order_id': 'HQ200622318753',
'order_status': '訂單取消',
'source_name': '網路門市',
'title_name': '訂單編號'
}
],
'responseNote': '成功'
}
備註
這次我沒找到的正規表示式為 .+
.+ 表達的意思是 "中間可以是多個任何字串"
希望這篇可以幫助到也想做模糊取代的人