Ruby搜索数组和替换字符串

时间:2015-02-10 23:09:20

标签: ruby arrays string search replace

我的问题是,如何搜索数组并在搜索的当前索引处替换字符串,而不知道索引数组字符串包含什么内容?

下面的代码将搜索互联网上托管的ajax文件,它会找到库存,查看我的库存中的每个武器,将ID添加到字符串中(这样我就可以检查之前是否已检查过该武器) 。然后它将在库存中出现的次数之后添加另一个值,然后在我检查库存中的所有武器之后,它将通过添加到字符串中的所有ID并将其与数字一起显示(发生的数量)。这是我知道我拥有的每种武器中有多少。

这是我所拥有的一个例子:

strList = ""
inventory.each do |inv|
    amount = 1
    exists = false
    ids = strList.split(',')
    ids.each do |ind|
        if (inv['id'] == ind.split('/').first) then
            exists = true
            amount = ind.split('/').first.to_i
            amount += 1
            ind = "#{inv['id']}/#{amount.to_s}" # This doesn't seem work as expected.
        end
    end
    if (exists == true) then
        ids.push("#{inv['id']}/#{amount.to_s}")
        strList = ids.join(",")
    end
end
strList.split(",").each do |item|
    puts "#{item.split('/').first} (#{item.split('/').last})"
end

这是我所期望的代码(伪代码)的概念:

inventory = get_inventory()
drawn_inv = ""
loop.inventory do |inv|
    if (inv['id'].occurred_before?)
        inv['id'].count += 1
    end
end loop

loop.inventory do |inv|
    drawn_inv.add(inv['id'] + "/" + inv['id'].count)
end loop

loop.drawn_inv do |inv|
    puts "#{inv}"
end loop

有关如何更换该系列的任何帮助表示赞赏!

编辑:很抱歉不需要有关我的代码的更多信息。我跳过代码底部不太重要的部分并显示注释代码而不是实际代码,我现在就添加它。

编辑#2:我会更新我对它的作用以及我期望的结果的描述。

编辑#3:添加了伪代码。

提前致谢, SteTrezla

1 个答案:

答案 0 :(得分:1)

你想要#each_with_index:http://ruby-doc.org/core-2.2.0/Enumerable.html#method-i-each_with_index

您可能还想查看#gsub,因为它需要一个块。您可能根本不需要将此字符串拆分为数组。基本上类似于strList.gsub(...){ |match| #...your block }