我試圖創建一段代碼,但無法使其工作。我能想到的最簡單的例子是解析一些CSV文件。 假設我們有一個CVS文件,但是數據是以某種層次結構組織的。就像這樣:解析分層CSV的功能方法
Section1;
;Section1.1
;Section1.2
;Section1.3
Section2;
;Section2.1
;Section2.2
;Section2.3
;Section2.4
等
我這樣做:
let input =
"a;
;a1
;a2
;a3
b;
;b1
;b2
;b3
;b4
;b5
c;
;c1"
let lines = input.Split('\n')
let data = lines |> Array.map (fun l -> l.Split(';'))
let sections =
data
|> Array.mapi (fun i l -> (i, l.[0]))
|> Array.filter (fun (i, s) -> s <> "")
和我
val sections : (int * string) [] = [|(0, "a"); (4, "b"); (10, "c")|]
現在我想創建行索引範圍的列表對於每個部分,如下所示:
[|(1, 3, "a"); (5, 9, "b"); (11, 11, "c")|]
其中第一個數字是小節範圍的開始線索引,第二個是結束線索引。我怎麼做?我正在考慮使用摺疊功能,但無法創建任何東西。
非常好!這就是我需要的。謝謝。 – Max 2010-02-26 00:40:10