F#,Split String和.Net方法

时间:2010-03-02 22:10:05

标签: f#

我是F#的新手。我正在使用VS2008 shell和F#interactive。 我尝试使用“System.String.Split”拆分字符串,但后来我得到错误: “拆分不是静态方法”

代码示例:

let Count text =
    let words = System.String.Split [' '] text
    let nWords = words.Length
    (nWords)

如何使用像F#中的split这样的String方法?

3 个答案:

答案 0 :(得分:50)

您将它们称为实例方法:

let Count (text : string) =
  let words = text.Split [|' '|]
  let nWords = words.Length
  (nWords)

(注意你需要使用[| |],因为Split使用数组而不是列表;或者,根据Joel Mueller的评论,因为Split采用了一个params数组,你可以将分隔符作为单独的参数传递(例如text.Split(' ', '\n')))

答案 1 :(得分:6)

现在,函数String.split在F#Power Pack中定义。你必须添加

#r "FSharp.PowerPack.dll";; 
#r "FSharp.PowerPack.Compatibility.dll";; 

请参阅专家F#的勘误表:http://www.expert-fsharp.com/Updates/Expert-FSharp-Errata-Jan-27-2009.pdf

在此处获取FSharp.PowerPack.dll:http://fsharppowerpack.codeplex.com/

答案 2 :(得分:0)

使用.NET成员函数:

let count (text : string) =
  text.Split [|' '|]
  |> Seq.length

或者使用FSharpx,这为我们提供了更多符合人体工程学的自由功能...

paket.dependencies

source https://api.nuget.org/v3/index.json

nuget FSharpx.Extras 2.3.2

paket.references

FSharpx.Extras

用法:

open FSharpx

let count (text : string) =
  text
  |> String.splitChar [| ' ' |]
  |> Seq.length

请注意,F# Power Pack seems to be deprecated