开发者

F#, Split String and .Net methods

I'm new to F#. I'm using VS2008 shell and F# interactive. I try to split a string using "System.String.Split" but then I get the error: "Split is not a static method"

code example:

开发者_JAVA百科
let Count text =
    let words = System.String.Split [' '] text
    let nWords = words.Length
    (nWords)

How do I use the String methods like split in F# ?


You call them as instance methods:

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

(Note you need to use [| |] because Split takes an array not a list; or, as per Joel Mueller's comment, because Split takes a params array, you can just pass in the delimiters as separate arguments (e.g. text.Split(' ', '\n')).)


The function String.split is now defined in the F# Power Pack. You must add

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

See the errata for Expert F#: http://www.expert-fsharp.com/Updates/Expert-FSharp-Errata-Jan-27-2009.pdf

Get FSharp.PowerPack.dll here: http://fsharppowerpack.codeplex.com/


Using .NET member functions:

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

Or using FSharpx, which gives us more ergonomic free-functions...

paket.dependencies

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

nuget FSharpx.Extras 2.3.2

paket.references

FSharpx.Extras

Usage:

open FSharpx

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

Note that F# Power Pack seems to be deprecated.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜