Extract data from an array

Hi
I have a while loop as below

while count <= total_ci_id_asso_types do
v = “sd_ci”+"#{count}"
ci_id_asso_type=params[:"#{v}"]
count=count+1
end

for example
puts ci_id_asso_type gives
id45service_desk_ci_association_type_id1
id65service_desk_ci_association_type_id1 etc

What I need is to get
45,1
65,1 (ie two numbers) from above…How can I do that

Thanks in advance
Sijo

On Fri, Mar 28, 2008 at 10:47 AM, Sijo Kg [email protected] wrote:

puts ci_id_asso_type gives
id45service_desk_ci_association_type_id1
id65service_desk_ci_association_type_id1 etc

What I need is to get
45,1
65,1 (ie two numbers) from above…How can I do that

One way, if the string has always those contents, and only the numbers
change:

x,y =
ci_id_asso_type.match(/id(\d+)service_desk_ci_association_type_id(\d+)/).captures.map
{|n| n.to_i}

BTW, I would do the loop like this:

1.upto(total_ci_id_asso_types) do |count|
v = “sd_ci”+"#{count}"
ci_id_asso_type=params[:"#{v}"]
end

or

total_ci_id_asso_types.times do |count|
v = “sd_ci”+"#{count + 1}"
ci_id_asso_type=params[:"#{v}"]
end

Regards,

Jesus.

On Fri, Mar 28, 2008 at 4:47 AM, Sijo Kg [email protected] wrote:

puts ci_id_asso_type gives
id45service_desk_ci_association_type_id1
id65service_desk_ci_association_type_id1 etc

What I need is to get
45,1
65,1 (ie two numbers) from above…How can I do that

Thanks in advance
Sijo

s = “id45service_desk_ci_association_type_id1”
(s.match /(\d+)service_desk_ci_association_type_id(\d+)/)[1,2].join(’,’)
=> “45,1”

Also, instead of params[:"#{v}"], you can just do params[v.to_sym] or
params[v.intern]

Todd

Hi

 Thanks for your replies

Sijo

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs