作者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