台灣最大程式設計社群網站
線上人數
901
 
會員總數:242929
討論主題:187836
歡迎您免費加入會員
討論區列表 >> C# >> c#文字檔案讀取並做分割
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
c#文字檔案讀取並做分割
價值 : 20 QP  點閱數:188 回應數:10

樓主

VISA
門外漢
0 3
34 6
發送站內信

我有一個txt檔案堶悼]刮這些數值
16.17 07-11-2018 11:457 22 上午?
16.18 07-11-2018 11:457 22 上午?
16.19 07-11-2018 11:457 22 上午?
16.20 07-11-2018 11:457 22 上午?
7.21 07-11-2018 11:457 22 上午?
8.22 07-11-2018 11:457 22 上午?
9.23 07-11-2018 11:457 22 上午?
16.24 07-11-2018 11:457 22 上午?
16.25 07-11-2018 11:457 22 上午?

經過上次問題後,可以得到如何只擷取到xx.xx的數值 像是16.13
但我也想要讀出7.21、8.22、9.23的數值
試過了幾次判斷式,我仍然無法成功讀取16.13和7.21。




private void timer1_Tick(object sender, EventArgs e)
{
textBox1.Text = "";
string pattern = @"[\d]{2}\.[\d]{2}"; // 規則字串
string pattern1 = @"[\d]{1}\.[\d]{2}";
string input = File.ReadAllText(textBox2.Text);
double dul = 0;

Regex regex = new Regex(pattern, RegexOptions.IgnoreCase); // 宣告 Regex 忽略大小寫
MatchCollection matches = regex.Matches(input);// 將比對後集合傳給 MatchCollection

if (matches.Count > 0)
{
foreach (Match match in matches) // 一一取出 MatchCollection 內容
{

dul = Convert.ToDouble(match.Value);
textBox1.Text = textBox1.Text + "\t" + dul.ToString();
}
}

}

搜尋相關Tags的文章: [ c#文字檔案讀取並做分割 ] ,
本篇文章發表於2018-08-07 14:45
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

春天
檢舉此回應
正規表示式線上版

string pattern = @"^\d+\.\d+";
本篇文章回覆於2018-08-07 15:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

Always
檢舉此回應
樣板改為string pattern = @"[\d]{1,2}\.[\d]{1,2}";
可取x.x,xx.xx,x.xx,xx.x
本篇文章回覆於2018-08-07 16:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

春天
檢舉此回應
這樣改到時候又給你問一個要取 123.123
本篇文章回覆於2018-08-07 17:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

VISA
檢舉此回應
對呀...或許會這樣。
規則運算 沒辦法做到只要是類似xxxx.xxxxx都取嗎
本篇文章回覆於2018-08-07 20:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

Always
檢舉此回應
那就改成string pattern = @"[\d]*\.[\d]*";
本篇文章回覆於2018-08-07 22:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
不錯的參考

Always
檢舉此回應
Sorry!
改成string pattern = @"[\d]+\.[\d]+";
才對
本篇文章回覆於2018-08-07 22:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

春天
檢舉此回應
1樓不是回答了嗎...
本篇文章回覆於2018-08-08 09:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

Always
檢舉此回應
1樓(string pattern = @"^\d+\.\d+";)只能用在1列1列處理,若整個檔案內容讀出只會取得第一個符合,所以我才另外列出來
本篇文章回覆於2018-08-08 10:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

春天
檢舉此回應
用 ReadAllLines 再自己一列一列處理,比較能掌握資料的情況
目前 樓主需要的功能是搜出 第一個欄位小數數字,所以可以利用matches來處理
萬一以後需求增加也要輸出日期或是欄位有異動增加一個一樣是小數數字的欄位
那你目前的控制流程就全部都要大改
本篇文章回覆於2018-08-08 10:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

VISA
檢舉此回應
謝謝兩位前輩,確實如春天說的一樣,一次讀取全部遇到資料量太大的問題,只好改為一個一個讀取。
感恩,已處理完畢。
本篇文章回覆於2018-08-08 11:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.