gpt4 book ai didi

ruby - 删除 ruby​​ 中的子字符串

转载 作者:数据小太阳 更新时间:2023-10-29 07:24:21 26 4
gpt4 key购买 nike

给定一个字符串数组,

array1 = ["abcdwillbegoneabcccc","cdefwilbegokkkabcdc"]

和另一个由模式组成的字符串数组,例如["abcd","beg[o|p]n","bcc","cdef","h*gxwy"]

任务是删除与任何模式字符串匹配的子字符串。例如,这种情况下的样本输出应该是:

["willbegonea","wilbegokkk"]

因为我们已经删除了与其中一种模式匹配的子字符串(根据出现的位置,匹配前匹配或匹配后匹配)。假设一两个匹配项总是出现在 array1 中每个字符串的开头或结尾处。

有没有用 ruby​​ 优雅地解决上述问题的想法?

最佳答案

构建一个正则表达式如何?

array1 = ["abcdwillbegoneabcccc","cdefwilbegokkkabcdc"]

to_remove = ["abcd","beg[o|p]n","bcc","cdef","h*gxwy"]

reg = Regexp.new(to_remove.map{ |s| "(#{s})" }.join('|'))
#=> /(abcd)|(beg[o|p]n)|(bcc)|(cdef)|(h*gxwy)/

array1.map{ |s| s.gsub(reg, '') }
#=> ["willeacc", "wilbegokkkc"]

注意我的结果和你的不一样

["willbegonea","wilbegokkk"]

但我认为我的是正确的,它从原来的版本中删除了“abcd”、“begon”和“bcc”,这似乎是我们想要的。

关于ruby - 删除 ruby​​ 中的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2206015/

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