F#,拆分字符串和.Net方法

F#,拆分字符串和.Net方法,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?将它们称为实例方法: let Count (text

我是新来的。我使用的是VS2008 shell和F#interactive。 我尝试使用“System.string.split”拆分字符串,但出现错误: “拆分不是静态方法”

代码示例:

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

如何使用字符串方法,如F#中的split?

将它们称为实例方法:

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

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

函数String.Split现在在F#Power Pack中定义。你必须加上

#r "FSharp.PowerPack.dll";; 
#r "FSharp.PowerPack.Compatibility.dll";; 
参见专家F#的勘误表:


在此处获取FSharp.PowerPack.dll:

使用.NET成员函数:

let count(文本:字符串)=
text.Split[|“”|]
|>序号长度
或者使用,这给了我们更符合人体工程学的自由功能

paket.dependencies

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

nuget FSharpx.Extras 2.3.2
FSharpx.Extras
paket.references

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

nuget FSharpx.Extras 2.3.2
FSharpx.Extras
用法:

打开FSharpx
计数(文本:字符串)=
文本
|>String.splitChar[|“”|]
|>序号长度

请注意

Split采用params数组,这意味着您可以传入数组,也可以只传入一个或多个字符文本,而不使用数组
text.Split''
text.Split'','\n'
(带或不带参数)完全有效。@Joel-您的第二个示例不起作用;它创建一个元组,其中
'\n'
作为后半部分。当被称为
text.Split('''.\n')
时,它确实可以工作。@kvb-没错,我误读了FSI中的输出。当它似乎起作用时,我很惊讶。