看板 C_Sharp 關於我們 聯絡資訊
滿常要去打網頁取資料 通常讀回來的內容長的會是下面這樣 A=xxx,B=ooo,C=yyy,… A="aaa" B="bbb"…… 中間分隔的可能是逗號分號或空白 等號右邊的值可能有放引號或沒引號 我太菜只會用Split去做分割 想請問有比較好的處理方式嗎? A=xxx,B=ooo…算一筆資料 一次處理的量大概都幾千筆 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.136.45.234 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1481504102.A.12A.html
IKAFIRE: regex12/12 09:18
GoalBased: 你用spilit有遇到什麼問題嗎 才兩種狀況很好處理吧12/12 12:43
vi000246: \w="?\w+"?12/12 12:59
感謝IKAFIRE前輩的提示 用Split是可以用 但是就覺得有點土法煉鋼的感覺 原始資料先拆成一次>>>取單筆 單筆再拆一次取每個等號的資料 用兩次foreach來達成 這樣做比起regex的效能是否比較差? 這邊是我自己try出來的規則 string rule = @"A=(?<1>[^,]), "; 這樣可以取到match.Group["1"]的值(A的值) ※ 編輯: skitty (114.136.45.234), 12/12/2016 14:14:21 ※ 編輯: skitty (114.136.45.234), 12/12/2016 14:14:53
Litfal: 用regex比較好,用split要考慮雙引號裡面有分隔符號的狀況12/12 14:44
Peruheru: 如果有單引號,前面變數有超過一個字 \w+=["']?\w+["']?12/12 17:12
Peruheru: 不過如果引號不對稱也會符合就是了,像是 ab="89'12/12 17:14
Peruheru: 用 (\w+)=["']?(\w+)["']? 的話,群組1和群組2就是要的12/12 17:17
Peruheru: 剩下就是看會不會有其他符號(小數點之類)等要加入模式內 12/12 17:18
Peruheru: 有專版RegExp唷 12/12 17:19
感謝 !! ※ 編輯: skitty (223.137.178.2), 12/12/2016 22:29:37