2010-03-02 5 views
32

저는 F #을 처음 사용합니다. VS2008 셸 및 F # 대화 형을 사용하고 있습니다. 나는 "System.String.Split"를 사용하여 문자열을 분할하려고하지만 그때 나는 오류를 얻을 : 나는 어떻게 사용합니까F #, 스플릿 문자열 및 .Net 메서드

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

:

코드 예제 "분할 정적 방법이 아닙니다" F #에서 split과 같은 String 메소드?

답변

45

당신은 인스턴스 메서드로 호출 :

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

(스플릿이 목록 배열을하지 걸리기 때문에 [| |]를 사용할 필요가 있습니다;, 분할이 PARAMS 배열이 걸리기 때문에, 조엘 뮬러의 의견에 따라, 또는 당신을 구분 기호로 별도의 인수로 전달할 수 있습니다 (예 : text.Split(' ', '\n')).

+7

분할하면 배열에 전달할 수 있습니다 의미 PARAMS 배열을 취하거나

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

는 전문가 F 번호에 대한 정오표를 참조 추가해야합니다 배열이 없으면 하나 이상의 문자 리터럴을 전달할 수 있습니다. 'text.Split ''또는'text.Split '', '\ n'' (괄호 유무와 상관없이)는 완벽하게 유효합니다. –

+7

@Joel - 두 번째 예제가 작동하지 않습니다. 그것은 두 번째 절반으로''\ n ''을 가진 튜플을 생성합니다. 그것은'text.Split ('', '\ n')'로 호출 될 때 작동합니다. – kvb

+0

@kvb - 네가 맞아, 나는 FSI의 결과물을 잘못 읽었다. 나는 그것이 작동하는 것처럼 보였을 때 놀랐다. –