作者BWF (大野狼)
看板C_Sharp
標題[問題] 讀取文字檔內之字串分類和切割
時間Mon Nov 26 14:01:52 2012
我現在有一文字檔內容大略如下:
V 0.01 1.01 0.02
V 1.33 2.21 0.51
V 6.70 1.23 3.50
.
.
.
f 1/1/1 2/2/1 3/3/1 4/4/1
f 5/4/2 6/1/2 7/2/2 8/3/2
f 1/4/3 4/1/3 6/5/3 5/6/3
.
.
.
內容大約有幾萬行這種資料,要對V,f的資料做分類,並且要對每行字串做切割,之後放
到所屬的陣列V,f。
ex:
V 0.01 1.01 0.02,由第一個字元辨識出屬於V的資料,切割出0.01,1.01,0.02等數
值,並將之放到V之陣列。f也是一樣。
1.我現在的問題卡在,不知道如何辨識每行字串的第一個字元,以進行分類。
2.分類後不知道該怎麼對字串切割出各個數值,以放到所屬陣列中。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.134.32.71
1F:推 Ansaga:List<string> VnF = new List<string>(); 11/26 14:57
2F:→ Ansaga:在迴圈內 11/26 14:57
3F:→ Ansaga:VnF.add(sr.ReadLine()); 11/26 14:58
4F:→ Ansaga:最後用split分開空白 然後存成你要的形式? 11/26 14:58
5F:→ Ansaga:這樣可以嗎? 11/26 14:58
6F:→ BWF:我試看看 11/26 16:06
7F:→ BWF:那要怎麼分辨第一個字元呢? 11/26 16:09
8F:推 Ansaga:if(Vnf[0][0] ==V) 11/26 16:12
9F:→ Ansaga:大概像這樣 11/26 16:13
10F:→ Ansaga:更正 =="V" 11/26 16:14
11F:→ BWF:所以你的方法是先對每一行做切割後儲存,然後再依照切割後,的 11/26 17:10
12F:→ BWF:第一個字元做判斷,進而做分類囉? 11/26 17:10
13F:推 Ansaga:隨便你啊 我不知道你還有什麼工具 11/26 18:05
14F:→ BWF:因為這個文字檔裡面還有其他資料,有沒有辦法READLINE之後,直 11/26 21:05
15F:→ BWF:接抓到字串的第一個字元,先做判斷? 11/26 21:06
16F:推 Ansaga:你試一次就知道了 11/27 09:39
17F:→ ssccg:string line = sr.ReadLine(); 11/27 14:49
18F:→ ssccg:line.StartWith("V") or line.ToCharArray(0,1)[0] == 'V' 11/27 14:49
19F:→ BWF:原來還有這種判斷字頭的方法啊!!感謝啊 11/27 21:06
20F:推 cloudsan:4.0之後可以用:File.ReadLines(@"XXX.txt").Where( 11/28 19:06
21F:→ cloudsan:v => v.StartsWith("V")).ToArray();取到所有相關字串 11/28 19:06
22F:→ BWF:有點看不懂上述的程式碼...,可以稍微講解一下嗎? 11/28 21:59
23F:推 Ansaga:linq 11/28 23:11
24F:→ cloudsan:sorry沒注意到,readline會傳回所有行的集合的IEnumable 12/01 15:46
25F:→ cloudsan:.where之後取得那個集合裡滿足這個條件的,在toarray 12/01 15:46
26F:→ cloudsan:其實也可以不用toArray啦,看你需要 12/01 15:46
27F:→ BWF:我還不會泛型.....,借的書沒一本有講到這個= = 12/01 18:25
28F:推 cloudsan:那先用先人講的吧XD 12/03 21:16
29F:→ cloudsan:講錯,用先人感覺不太對= =,前面的人說的:p 12/03 21:16