5 a.count "lo", "o" -6ren">
gpt4 book ai didi

ruby - 计数方法在 Ruby 中如何工作?

转载 作者:行者123 更新时间:2023-12-02 06:13:54 25 4
gpt4 key购买 nike

我很难理解 Ruby docs 中的以下代码段:

a = "hello world"
a.count "lo" #=> 5
a.count "lo", "o" #=> 2
a.count "hello", "^l" #=> 4
a.count "ej-m" #=> 4

"hello^world".count "\\^aeiou" #=> 4
"hello-world".count "a\\-eo" #=> 4

尤其是这段代码a.count "ej-m"。谁能解释一下它是如何工作的?

最佳答案

想象一下由正则表达式语法中的 [] 包裹的“模式”字符串,它们与每个字符匹配。

因此,如果我们将 a = "hello world" 分解为字符:

[1] pry(main)> a = "hello world"
=> "hello world"
[2] pry(main)> a.split('')
=> ["h", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d"]

并将“ej-m”转换为用 [] 包裹的正则表达式,我们得到 /[ej-m]/ - 这意味着'e' 或从 'j''m' 的任何字符(包括两者):

[3] pry(main)> a.split('').select{|c| c=~ /[ej-m]/}
=> ["e", "l", "l", "l"]

我们得到了 4 场比赛 - 这也是您得到的结果。本质上 a.count "ej-m" 等同于:

[4] pry(main)> a.split('').count{|c| c=~ /[ej-m]/}
=> 4

该方法的多个参数只是匹配之间的:

[5] pry(main)> a.split('').count{|c| c =~ /[hello]/ and c =~ /[^l]/}
=> 4

关于ruby - 计数方法在 Ruby 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46514250/

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