2017-10-10 8 views
2

f#の文字列の母音をどうやって計算しますか?どのようにfの文字列の母音を数えることができます#

let inputText = "sdhkjhsakdnadwqerdsdasefds" 
let vowels = ["a";"e";"i";"o";"u"] 
let count inputText = Seq.filter ((=) vowels) >> Seq.length 
printfn "%A" count 
Console.ReadLine() |> ignore 
+3

FSI(F#interactive)を使用していますか? Visual StudioのAlt-EnterまたはVSコードを使用してFSIでコードを実行し、このような問題をより小さな部分で解決できます。はるかに速く学ぶのに役立ちます。 – TheQuickBrownFox

答えて

1
let inputText = "sdhkjhsakdnadwqerdsdasefds" 
let vowels = ['a';'e';'i';'o';'u'] 
let isVowel = 
    fun c -> vowels |> List.contains c 

let count = 
    String.filter isVowel 
    >> String.length 

printfn "%A" (count inputText) 

私は文字の代わりに、文字列のリストに母音のリストを変更しました。実際には関数内でinputText引数を使用する必要があります。また、文字列をフィルタリングする前に文字列に変換する必要があります。そしてあなたの関数への引数としてinputTextを与えなければなりません。関数の引数inputTextと変数inputTextには、名前以外の共通点はありません。

EDIT:>>で優先メソッドを使用する代わりに、isVowel関数を計算し、countからinputText引数を削除しました。

1
let proj x = 
    if Array.contains x [| 'a';'e';'i';'o';'u' |] then 1 
    else 0 

let count (text: string) = 
    text.ToCharArray() 
    |> Array.sumBy proj 
関連する問題