计算一个单词在给定字符串中的出现次数



如何获得给定字符串中特定子字符串的计数?

来源:

"00101230314120600 n400000he9nnotprovided170002303141230738080759921100101230314120600n400000he9nnotprovided1700023031412307380807599211">

子字符串:00101230314120600 n400000he9n

let countMatches wordToMatch (input : string) =
Regex.Matches(input, Regex.Escape wordToMatch).Count

我不明白为什么你的代码不工作,这是代码作为一个xunit测试通过。

(我个人不喜欢用正则表达式来做这个,但它可以工作)

module Tests
open Xunit
open System.Text.RegularExpressions
[<Fact>]
let ``Count substrings`` () =
let input = "00101230314120600N400000HE9NNOTPROVIDED170002303141230738080759921100101230314120600N400000HE9NNOTPROVIDED1700023031412307380807599211"
let wordToMatch = "00101230314120600N400000HE9N"
let count = Regex.Matches(input, Regex.Escape wordToMatch).Count
Assert.Equal(2,count)

我个人认为我会使用分割

[<Fact>]
let ``Count substrings with split`` () =
let input = "00101230314120600N400000HE9NNOTPROVIDED170002303141230738080759921100101230314120600N400000HE9NNOTPROVIDED1700023031412307380807599211"
let wordToMatch = "00101230314120600N400000HE9N"
let count = (input.Split wordToMatch).Length - 1
Assert.Equal(2,count)

我认为这是可行的,你只需要检查一下边缘情况。

我现在不能编写代码本身,但是为了避免昂贵的正则表达式,您有以下选择:
获取intputli的长度
获取sourcels的长度
获取sourceintput的所有出现的长度,用空字符串替换为lr
出现的数量是(ls-lr)/li
即。删除时缺失了多少次

相关内容

  • 没有找到相关文章

最新更新