gpt4 book ai didi

.net - 在 F# 中从字符串中去除字符

转载 作者:行者123 更新时间:2023-12-02 19:32:13 29 4
gpt4 key购买 nike

我是函数式编程和 F# 的新手,确实有很多关于如何在 F# 中执行此操作(从字符串中删除特定字符)的信息,但我遇到了以下函数,希望能得到一些帮助来准确理解发生了什么事:

let stripchars chars str =
Seq.fold
(fun (str: string) chr ->
str.Replace(chr |> Char.ToUpper |> string, "").Replace(chr |> Char.ToLower |> string, ""))
str chars

我通过在我定义的 split 函数中调用它来使用 stripchars 函数:

let split (str : string) =
((stripchars "?,.,!,," str).Split ' ') |> Array.toList

我现在很难理解的是,在函数 stripchars 中,当传递参数“chars”时,包含要从字符串 str 中删除的字符序列,直到最后才在代码中使用它“str 字符”行。那么这如何运作呢?

最佳答案

正如 Guy Coder 在上面的评论中指出的那样,函数体具有非正统的格式。如果将累加器函数提取到内部嵌套函数,它可能会更具可读性:

let stripchars chars str =
let removeOneChar (str : string) chr =
str.Replace(chr |> Char.ToUpper |> string, "").Replace(chr |> Char.ToLower |> string, "")
Seq.fold removeOneChar str chars

该函数的返回值是最后一个表达式,Seq.fold removeOneChar str chars

removeOneChar 函数的类型为 string -> char -> string

关于.net - 在 F# 中从字符串中去除字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36667798/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com