Jesús Gabriel y Galán
3/28/2008 10:00:00 AM
On Fri, Mar 28, 2008 at 10:47 AM, Sijo Kg <sijo@maxxion.com> wrote:
> 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
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.