gpt4 book ai didi

ruby - 编写正则表达式作为 gsub 的参数!方法——难倒?

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

在我的 Rails 4.2.6/Ruby 2.2.4 应用程序中,我有一个生成字符串的数据库查询方法;例如:

"Chest - pectoralis, Quads - quadriceps, Hamstrings - biceps femoris"

然而,我想要的结果是:

"Chest, Quads, Hamstrings"

域跟踪 21 个肌肉群,这意味着生成的字符串可以有很多不同的组合。但是,该字符串将始终具有相同的模式,即:“普通肌肉名称 - 技术肌肉名称”。

使用条件逻辑,我可以通过将“字符串”参数传递给 gsub 方法来获得我想要的结果,如下所示:

 if @muscle_group_ids == [1, 13, 14]
@muscle_group_names = MuscleGroup.where(id: @muscle_group_ids).map { |n| n[:name]
}.join(', ').gsub!("Chest - pectoralis", "Chest").gsub!("Quads - quadriceps", "Quads").gsub!("Hamstrings - biceps femoris", "Hamstrings")
end
=> "Chest, Quads, Hamstrings"

这种方法不可行;它既乏味又脆弱。必须有更好的方法来从生成的字符串中删除破折号和技术名称。我对如何最好地完成这项工作感到困惑。是否可以编写一个正则表达式来达到预期的结果,如何实现?是否有更简单、更好、更清洁的方法来实现我想要做的事情?谢谢!

最佳答案

您可以在 map 函数中将名称拆分为 "-",然后只返回第一部分,如下所示:

if @muscle_group_ids == [1, 13, 14]
@muscle_group_names = MuscleGroup.where(id: @muscle_group_ids).map { |n|
n = n[:name].split(" -")[0]
}.join(', ')
end
=> "Chest, Quads, Hamstrings"

关于ruby - 编写正则表达式作为 gsub 的参数!方法——难倒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42818425/

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