作者don750421 (1+1≠2)
看板C_Sharp
標題[問題] 如何擷取不同長度的內容?
時間Wed Jun 25 22:55:10 2014
我要寫一支程式供使用者去讀取文字檔
文字檔是由儀器軟體所產生。
文字檔內容就是量測數據的結果。
類似如下文字檔:
Width:100cm
Height:20cm
Tool:xxxxx
Vision:4.2.2.5
溫度:200
因為量測儀器有很多款式,產生出的文字檔也不同(但是該有的數據都有)
假設我今天要擷取Width,我可以讓使用者下數字所在的區間。
再透過SubString去擷取出100這個數字。
如果,今天量測數值是90,則使用者還要再去設定擷取範圍。
請問一下,除了設定要擷取的範圍這個方法外,還有其他方式嗎??
正規表示式這個我有想過,但還是要教使用者去寫正規表示式 = ="
所以想問問有沒有其他方式,謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.239.135.65
※ 文章網址: http://webptt.com/m.aspx?n=bbs/C_Sharp/M.1403708115.A.C52.html
1F:→ VVll:所以儀器軟體產生出來的文字格式 你能不能控制,可以的話 06/25 23:36
2F:→ VVll:就產出xml 06/25 23:36
3F:→ VVll:不然用string.split(new string[]{":"}) 以":"作切割 06/25 23:38
4F:→ VVll:或者逐行去讀資料,用":"切key跟vlaue 06/25 23:39
5F:推 fdvd:如果說 輸出的欄位都一樣 譬如一樣是那五個欄位 以Width來 06/25 23:46
6F:→ fdvd:說 只需要數值的部份而不涵蓋單位, 可以考慮在substring完後 06/25 23:47
7F:→ fdvd:將單位的字串trim掉 只是不確定原PO是不是指這意思@@" 06/25 23:47
8F:→ aacced:string strSample = "Width:100cm"; 06/26 01:02
9F:→ aacced:int iCapture = strSample.IndexOf(":") + 1; 06/26 01:03
10F:→ aacced:string strResult = strSample.Substring(iCapture, (strSa 06/26 01:04
11F:→ aacced:mple.Length - iCapture - 2)); 06/26 01:04
12F:→ aacced:最後-2是減掉cm, 也可以先判斷字串內有無cm,若無就不-2 06/26 01:09
13F:→ chrisQQ::後面值的部份直接正規砍掉不是 0-9\. 的會不會比較簡單 06/26 11:33
14F:→ chrisQQ:原來原PO不要 regex 我錯了... 06/26 11:33