2010-03-02 9 views
32

Soy nuevo en F #. Estoy usando shell VS2008 y F # interactivo. trato de dividir una cadena usando "System.String.Split" pero luego me sale el error: "Split no es un método estático"F #, Split de Cuerda y .Net métodos

código de ejemplo:

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

¿Cómo se utiliza la Métodos de cadena como dividir en F #?

Respuesta

45

usted los llama como métodos de instancia:

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

(Nota es necesario utilizar [| |] porque Dividir toma una matriz no es una lista, o bien, de acuerdo con el comentario de Joel Mueller, porque de Split toma una matriz params, se puede simplemente pasar los delimitadores como argumentos separados (por ejemplo, text.Split(' ', '\n')).)

+7

de Split toma una matriz params, lo que significa que puede pasar en una matriz o simplemente puede pasar uno o más literales de caracteres, sin una matriz. 'text.Split ''' o 'text.Split '', '\ n'' (con o sin parens) son perfectamente válidos. –

+7

@Joel: su segundo ejemplo no funciona; crea una tupla con ''\ n'' como la segunda mitad. Sin embargo, funciona cuando se llama como 'text.Split ('', '\ n')'. – kvb

+0

@kvb - Tiene razón, leí mal la salida en FSI. Me sorprendió cuando pareció funcionar. –