F#,Split String和.Net方法

Neo*_*Neo 40 f#

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

代码示例:

let Count text =
    let words = System.String.Split [' '] text
    let nWords = words.Length
    (nWords)
Run Code Online (Sandbox Code Playgroud)

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

ito*_*son 52

您将它们称为实例方法:

let Count (text : string) =
  let words = text.Split [|' '|]
  let nWords = words.Length
  (nWords)
Run Code Online (Sandbox Code Playgroud)

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

  • Split接受一个params数组,这意味着你可以传入一个数组,或者你只需​​传入一个或多个字符文字,而不需要数组.`text.Split''`或`text.Split'','\n'`(有或没有parens)完全有效. (10认同)
  • @Joel - 你的第二个例子不起作用; 它创建了一个带有''\n''作为下半部分的元组.但是当它被称为`text.Split('','\n')`时它确实有用. (7认同)

小智 6

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

#r "FSharp.PowerPack.dll";; 
#r "FSharp.PowerPack.Compatibility.dll";; 
Run Code Online (Sandbox Code Playgroud)

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

在这里获取FSharp.PowerPack.dll:http://fsharppowerpack.codeplex.com/