gpt4 book ai didi

Ruby Koans - 正则表达式和 .sub : Don't understand reason behind answer

转载 作者:数据小太阳 更新时间:2023-10-29 06:53:33 25 4
gpt4 key购买 nike

为了澄清,这里是 about_regular_expressions.rb 文件中我遇到问题的确切问题:

def test_sub_is_like_find_and_replace
assert_equal __, "one two-three".sub(/(t\w*)/) { $1[0, 1] }
end

我知道这个问题的答案是什么,但我不明白得到这个答案是怎么回事。我对 Ruby 和正则表达式还很陌生,尤其是我对大括号之间的代码以及它如何发挥作用感到困惑。

最佳答案

大括号内的代码是一个 block sub用于替换匹配项:

In the block form [...] The value returned by the block will be substituted for the match on each call.

该 block 接收匹配项作为参数,但通常的正则表达式变量($1$2、...)也可用。

在此特定情况下, block 内的 $1“two”array notation提取 $1 的第一个字符(在本例中为 "t")。因此,该 block 返回 "t" 并且 sub 将原始字符串中的 "two" 替换为 "t".

关于Ruby Koans - 正则表达式和 .sub : Don't understand reason behind answer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6169391/

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