如何从 Rails 中的数组中解构一个 id
How to destructure an id out of an array in Rails
我正在从 Redis 取回一个数组(通过我的项目的控制器),我需要在我的产品视图中对其进行解构。
数组(显示 2 个结果,但还可以更多):
["project-5", "project-4"]
数字 (5, 4) 是我的项目 ID (@project.id),我需要减去它才能在 .each do
函数中使用。
我能找到的所有内容都是多变量的解构解决方案。但是这里我只有1个变量。
谁能帮我解决如何从这个数组中分离出产品 ID 的问题?
您可以使用 match 方法在正则表达式的帮助下获取 ID。假设 array
由带有 id-s 3
和 44
的项目组成,那么一行将是:
2.0.0-p353 :091 > array.map{|el| el.match(/\d+$/)[0]}
=> ["3", "44"]
如果您确实需要使用 .each do
那么
array.each do |el|
el.match(/\d+$/)[0]
end
您还可以使用带有正则表达式的方法 gsub 将除 id
内部字符串之外的所有内容替换为空字符串,因此仅保留字符串的 id 部分。
一行 (array = ["proj3ct-3", "project-1567"]
):
2.0.0-p353 :040 > array.map {|el| el.gsub(/(.*\-)[^\d]*/, "")}
=> ["3", "1567"]
.each do
类似于前面 match
的示例。
编辑: 如果您希望 do
-block 到 return 已经格式化的数组,那么您应该使用 bang-method 来自gsub 像这样: el.gsub!(/(.*\-)[^\d]*/, "")
这也会对元素进行更改。仅限非 bang 方法 return 更改值而不改变它们。
以防万一您不知道并且想 test/analyze 您的正则表达式然后 this is a good place to do it- I've been using it for quite a while. Also a good place to recheck some basics is here
我正在从 Redis 取回一个数组(通过我的项目的控制器),我需要在我的产品视图中对其进行解构。
数组(显示 2 个结果,但还可以更多):
["project-5", "project-4"]
数字 (5, 4) 是我的项目 ID (@project.id),我需要减去它才能在 .each do
函数中使用。
我能找到的所有内容都是多变量的解构解决方案。但是这里我只有1个变量。
谁能帮我解决如何从这个数组中分离出产品 ID 的问题?
您可以使用 match 方法在正则表达式的帮助下获取 ID。假设 array
由带有 id-s 3
和 44
的项目组成,那么一行将是:
2.0.0-p353 :091 > array.map{|el| el.match(/\d+$/)[0]}
=> ["3", "44"]
如果您确实需要使用 .each do
那么
array.each do |el|
el.match(/\d+$/)[0]
end
您还可以使用带有正则表达式的方法 gsub 将除 id
内部字符串之外的所有内容替换为空字符串,因此仅保留字符串的 id 部分。
一行 (array = ["proj3ct-3", "project-1567"]
):
2.0.0-p353 :040 > array.map {|el| el.gsub(/(.*\-)[^\d]*/, "")}
=> ["3", "1567"]
.each do
类似于前面 match
的示例。
编辑: 如果您希望 do
-block 到 return 已经格式化的数组,那么您应该使用 bang-method 来自gsub 像这样: el.gsub!(/(.*\-)[^\d]*/, "")
这也会对元素进行更改。仅限非 bang 方法 return 更改值而不改变它们。
以防万一您不知道并且想 test/analyze 您的正则表达式然后 this is a good place to do it- I've been using it for quite a while. Also a good place to recheck some basics is here