如何统计字符串中特定字符的出现次数

2024-04-23

我不知道从哪里开始检查字符串中特定字符的 n 次出现。我已经列出了我认为是该功能框架的基本轮廓,但我不确定内容是什么?

let countCharFromNth (getStr : string)(chkdChar : char) = 
    if getStr.Length >=1 then 

    else printfn "Not enough arguments"

TL;DR

“最惯用”的方式可能是@Mark Seemanns:

let count x = Seq.filter ((=) x) >> Seq.length

The TooLong part

请注意,这个函数是完全通用的:x:'a -> (seq<'a> -> int) when 'a : equality,即它计算任何出现的次数x在一个序列中'as,只要'a支持平等。由于右侧是一个函数,我们也不需要指定字符串参数。这就是所谓的无点 https://wiki.haskell.org/Pointfree风格。 该函数是通过转动来构造的=通过将运算符括在括号中将其放入函数中(认为(=) = fun x y -> x = y),用这个谓词过滤序列并计算结果seqs 长度,即

let count x xs =
    xs
    |> Seq.filter (fun x' -> x' = x)
    |> Seq.length

which is

let count x xs =
    Seq.length(Seq.filter (fun x' -> x' = x) xs)

当然,您也可以利用“C# 方式”:

let count' x xs = System.Linq.Enumerable.Count(xs, fun x' -> x' = x)

这里你不能只转动相等运算符(=)转换为谓词,因为 F# 编译器需要施展一些魔法来将 F# 转换为谓词'a -> bool into a Func<'a, bool>.

用法完全相同:

count 'a' "abbbac"

或(更易读)

"abbbac" |> count 'a'
"abbac" |> count' 'b'

这(以及更好的可组合性)是函数式程序员倾向于颠倒参数顺序的原因(count x xs vs. count xs x).

更奇特(且性能较差)的解决方案:

let count'' (c : char) str =
    (System.Text.RegularExpressions.Regex.Matches(str, string c)).Count

let count''' (c : char) str =
    (String.length str) - (str.Replace(string c, "") |> String.length)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何统计字符串中特定字符的出现次数 的相关文章

  • 将 F# 类型保存到数据库

    A lot http gorodinski com blog 2013 02 17 domain driven design with fsharp and eventstore f 文章数推荐 http fsharpforfunandpr
  • 使用 leftOuterJoin,不需要 .DefaultIfEmpty()

    的文档leftOuterJoin MSDN 上的查询表达式 http msdn microsoft com en us library hh225374 aspx通过样本反复暗示 当使用leftOuterJoin on into 你仍然必须
  • 将事件绑定到 ItemsControl 中的按钮

    我有一个 Windows Phone 7 应用程序 其中包含一些 xaml 如下所示
  • 带表达式的 F# 类型定义

    是否可以这样表达 type id int gt 0 我知道它不可能静态执行 因为这意味着 F 具有依赖类型 在 C 中 我习惯于使用代码契约来执行此类操作并获得运行时强制执行 我正在这里寻找类似的东西 Thanks 编辑 感谢您提供的所有答
  • F# 和 MEF:导出函数

    因此 我试图在 F 控制台应用程序中运行这个简单的测试 open System Reflection open System ComponentModel Composition open System ComponentModel Com
  • 当 Generic.List.Add 是函数中的最后一个语句并且开启尾调用优化时,性能会受到影响

    我遇到了一个奇怪的性能损失 我将其归结为以下代码
  • F# 中的选项类型如何工作

    因此 我一直在阅读 Apress 的 Expert F 书籍 主要将其用作构建玩具式 F 库时的参考 但有一点我未能掌握 那就是 Option 类型 它是如何工作的以及它在现实世界中的用途是什么 选项类型至少为similar to Null
  • true 和布尔列表 f# 的长度

    直接使用递归 写一个函数truesAndLength bool list gt int int那 返回列表的长度 在该对的第一个组件中 以及列表的数量 列表中正确的元素 在第二个组件中 你的函数必须只迭代 遍历列表的元素一次 请勿使用 Li
  • F# 匹配 ->

    我想做类似的东西 Nemerle 语法 def something match STT 1 with st Summ 2 with st AVG gt st summbycol counter STT 在 F 上 那么 F 是真的吗 没有对
  • Async.AwaitTask 在 f# 中如何工作?

    我知道 f 和 c 异步模型之间的主要区别在于 在 f 中 除非您调用 Async RunSynchronously 之类的内容 否则异步执行不会开始 在 C 中 当方法返回任务时 通常 并非总是 立即在后台线程中开始执行 Async Aw
  • 如何为 Azure Function 启用“始终开启”功能?

    我有一个具有 3 个功能的功能应用程序 其中一个功能每 2 分钟定时器触发一次 我观察到 过了一会儿 该功能停止被触发 但当我进入门户时又重新启动 据我了解 原因是默认情况下 始终开启 处于关闭状态 但是 当我进入应用程序设置 常规设置时
  • F# 核心库源代码有一个用于将元组编译为结构的标志,但我无法使其工作

    这是后续问题这个提议 https fslang uservoice com forums 245727 f language suggestions 6148669 short tuples compiled as structs up t
  • 什么时候需要使用 new 来初始化 F# 类型?

    给定一个类 例如 type MyClass member this Greet x printfn Hello s x 使用初始化实例是否合适 let x new MyClass 或没有new 另外 什么时候使用new构造函数比 a 更有用
  • 生成尾调用操作码

    出于好奇 我尝试使用 C 生成尾部调用操作码 斐波那契数很简单 所以我的 C 示例如下所示 private static void Main string args Console WriteLine Fib int MaxValue 0
  • 如何在 F# 中定义这种惰性(无限?)数据结构

    我在定义以下简单文本光标时遇到问题 该光标由元组表示 其中第一个元素是当前字符 如果函数获取下一个元素或崩溃 则第二个元素是 let rec nextAt index text if index lt String length text
  • 对 F# 中任意嵌套级别的列表求和

    我正在尝试创建一个 F 函数 它将返回列表的总和int任意嵌套 IE 它将适用于list
  • F# 生成日期序列/数组

    在 F 中我可以轻松做到 let a 1 10 那我为什么不能做 let a DateTime Parse 01 01 2012 let b DateTime Parse 01 01 2020 let dateList a b 它给出了一个
  • 副作用是纯函数中找不到的一切吗?

    可以肯定地说 以下二分法成立 每个给定的函数是 要么纯粹 或有副作用 如果是这样 函数的 副作用就是纯函数中找不到的任何东西 这很大程度上取决于您选择的定义 可以公平地说 函数是pure or impure 纯函数始终返回相同的结果并且不会
  • 函数式编程是否避免了状态?

    根据维基百科 http en wikipedia org wiki Functional programming 函数式编程是一种编程范式 它将计算视为数学函数的评估避免状态和可变数据 强调我的 这是真的吗 我个人的理解是 它使状态更加明确
  • 如何在 F# 中组合 Result<> 列表?

    用这个代码 let a 3 4 5 6 7 let check x if x 2 0 then Ok x else Error x let b a gt List map check 我如何将 B 总结为 如果一切OK 则Ok 如果有任何错

随机推荐

  • 简单聚类算法 2D。检测点簇

    任何人都知道用 C 实现的简单算法来检测 2D 游戏中的怪物组 前任 char周围100范围内有怪物 我想检测哪些怪物在彼此范围 2 内 如果至少有 5 个在一起 则在该位置使用效果区域技能 否则使用单目标技能 最好有一个实现的链接 最好是
  • 在 matplotlib 中,有没有办法在条形/线条/补丁下方设置网格线,同时保留上面的刻度标签?

    相关Matplotlib 在其他图形元素后面绘制网格线 https stackoverflow com questions 1726391 matplotlib draw grid lines behind other graph elem
  • 读外国文字

    我有一个包含英超足球运动员姓名的数据库 我正在将其读入 R 3 02 但当涉及到姓名中含有外来字符 元音变音 重音符号等 的球员时 我遇到了困难 下面的代码说明了这一点 PlayerData lt read table C Users Do
  • 将 vec3b 转换为 mat

    我有彩色图像im 我想使用以下代码使用 vec3b 获取 3 通道图像的像素值 for int i 0 i lt im rows i for int j 0 j lt im cols j for int k 0 k lt nChannels
  • 在 Java 中显式调用默认方法

    Java 8 引入默认方法 http cr openjdk java net dlsmith jsr335 jsr335 0 6 2 H html提供扩展接口的能力 而无需修改现有的实现 我想知道当该方法已被覆盖或由于不同接口中的默认实现冲
  • 自动调整winform和控件到屏幕尺寸

    我创建了一个 winform 应用程序 每个屏幕的尺寸为1361 768像素 这对于较大的屏幕和 或笔记本电脑非常有用 但现在我必须将我的应用程序移至 10 英寸屏幕平板电脑 这意味着我的应用程序不适合 我以前从未处理过这个问题 如何在较小
  • R包安装时间长 - 源代码或二进制类型

    我正在尝试安装一个名为stringi使用下面的命令 install packages stringi 虽然它没有抛出任何错误消息 但安装尚未结束 我在控制台屏幕上看到很多消息 该屏幕持续运行超过 45 分钟 gt install packa
  • JavaScript 中何处使用 ArrayBuffer 与类型化数组?

    我正在从 Node js 迁移到浏览器环境 但我仍然对 ArrayBuffer 与类型化数组 例如 Uint8Array 感到困惑 我对在哪里使用类型化数组以及在哪里直接使用 ArrayBuffer 感到困惑 将一种转换为另一种并不难 反之
  • 无法保存从网络摄像头捕获的图像(OpenCV 2.3 的 imwrite 编译错误)

    我正在使用 OpenCV 2 3 制作简单的网络摄像头程序 但遇到了编译错误 任何想法将不胜感激 编译后 我在 imwrite 处收到以下错误 在下面代码的 read 函数中 这个样本 https code ros org svn open
  • 使用 JavaScript 读取元素的 CSS 属性

    因此 如果有一个 css 文件链接到如下网页 我想读取某个属性 例如 div 有 className layout 并且我想使用 JavaScript 读取此属性的详细信息 我该怎么做 我已经搜索了很多 但几乎没有运气 请建议 您有两个选择
  • 如何在 React Native ListView 中将项目居中?

    我试图在选择一个项目时将其置于水平列表视图的中心 我当前的策略是首先测量项目并滚动到视图中引用项目的 x 坐标 目前 每当我按下某个项目时ListView滚动到最后x 538 有没有更简单的方法来实现这一点 同时保持代码无状态 功能 con
  • 带有 JSpinner 的 JTable 启用/禁用

    我有一个 3 列的 JTable 第 2 列是一个复选框 我想启用 禁用该行的 JSpinner 我已经按照我想要的方式工作了 除了一件事 JSpinner 实际上看起来并不像是被禁用的 文本和微调器按钮呈灰色 我不太确定如何实现这一点 我
  • parseInt() 和 parseFloat() 之间的区别[重复]

    这个问题在这里已经有答案了 可能的重复 parseInt 和 parseFloat 之间的行为差 异 https stackoverflow com questions 9528433 behavior difference between
  • 相同代码的货物构建:虚假的编译时错误?

    我有板条箱A取决于B and B取决于rust nmea https github com Dushistov rust nmea crate 如果我建造箱子A我遇到了很多错误 所有错误都错过了 use std error Error 在构
  • 取消按下 esc 键时的用户输入的简单方法?

    Is there a simple way to cancel the user input in a JTextField when key Esc is pressed 我的意思是与关键侦听器和数据备份不同的东西 Thanks Add
  • Selenium waitFor 机制的内部工作原理是什么?

    我试图通过拦截对 doClick locator 的调用来自定义 Selenium 单击命令的行为 通过 user extentions js 基本上 每当我们的应用程序的 繁忙指示器 显示时 我都需要延迟单击操作 现在这种事情的标准答案是
  • Android Wear 上长时间运行的应用程序

    Android Wear 生态系统似乎是围绕用户将与之交互然后关闭的快速任务构建的 这对于大多数应用程序来说都非常有效 但是对于一个涵盖长时间运行的任务并且在手表休眠时不应自动关闭的应用程序又如何呢 我的具体案例 通过 Swing 高尔夫
  • 在 Kotlin 中测试 CoroutineScope 基础设施

    有人能够向我展示如何使该 viewModel 中的 getMovies 函数可测试吗 我无法进行单元测试来正确等待协程 1 我很确定我必须创建一个测试 CoroutineScope 和一个正常的 lifeCycle CoroutineSco
  • PHP 替换,但替代替换字符串

    好的 这就是我想做的 我正在尝试使用 PHP 来开发本质上是tinyMarkdown 实现的子集 不值得使用完整的 Markdown 类 我本质上需要执行 str replace 但每次出现针时都会交替替换替换字符串 以便处理开始和结束 H
  • 如何统计字符串中特定字符的出现次数

    我不知道从哪里开始检查字符串中特定字符的 n 次出现 我已经列出了我认为是该功能框架的基本轮廓 但我不确定内容是什么 let countCharFromNth getStr string chkdChar char if getStr Le