我對F#很新。我寫了一個函數,它返回目標中子串匹配索引的數組,並且它與我在C#中編寫的類似。子串索引
是否有解決此問題的更實用的方法,並且可以在不使用任何可變變量的情況下解決該問題?
let SubStringIndices (haystack:string) (needle:string) =
let mutable indices = System.Collections.Generic.List<int>()
let mutable index = haystack.IndexOf(needle)
while index >= 0 do
indices.Add(index)
index <- haystack.IndexOf(needle, index+1)
indices.ToArray()
printfn "%A" (SubStringIndices "abaabababaaab" "ab")
// prints [|0; 3; 5; 7; 11|]
我不想找一個解決方案,檢查每個索引的子串匹配。
BTW,沒有必要做'在這個例子中indices'可變的。這種集合類型本身是可變的。通過聲明'indices'可變,你可以創建一個可變引用到可變集合。 – wmeyer 2011-03-02 19:17:37