2010-03-02 15 views
32

Sono nuovo di F #. Sto usando shell VS2008 e F # interattivo. cerco di dividere una stringa utilizzando "System.String.Split", ma poi ottengo l'errore: "Split non è un metodo statico"F #, metodi Split String e .Net

codice di esempio:

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

Come si usa il Metodi di stringa come dividere in F #?

risposta

45

li chiami come metodi di istanza:

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

(Nota è necessario utilizzare [| |] perché Split prende un array non una lista, oppure, secondo il commento di Joel Mueller, perché Split prende una matrice params, è è sufficiente passare i delimitatori come argomenti separati (ad es. text.Split(' ', '\n')).

+7

Split prende una matrice params, il che significa che è possibile passare in un array, o puoi semplicemente passare in uno o più caratteri letterali, senza un array. 'text.Split ''' o 'text.Split '', '\ n'' (con o senza parens) sono perfettamente validi. –

+7

@Joel - Il tuo secondo esempio non funziona; crea una tupla con ''\ n'' come la seconda metà. Funziona anche se chiamato come 'text.Split ('', '\ n')', comunque. – kvb

+0

@kvb - Hai ragione, ho interpretato male l'output in FSI. Sono rimasto sorpreso quando sembrava funzionare. –