我目前正试图弄清楚如何将索引范围作为字符串传递,但到目前为止还没有任何运气。这是我正在尝试做的一个例子:
pos = %w{1 2..4}
values = %{x cat}
test_string = "This is a test with a string."
test_string[pos[1]] = values[1]
我知道我可以用split或类似的东西来分解它,但我真的想知道如何直接传递这个值。我以为我可以用eval完成它,但到目前为止我一直没有运气。非常感谢任何帮助,谢谢!
答案 0 :(得分:0)
不确定为什么你想这样做,但你可以这样做:
%Q{1 #{(2..4).to_a.join(' ')}}.split
注意:如果你试图操纵你想要的测试字符串pos[0].chr
(数组从0开始,.chr
将得到ASCII值)。
[1] + (2..4).to_a
Edit2:根据您提供的信息尝试以下
pos = [15..22, 165..172] #array of ranges
dates = %w{20100426 20100430}
pos.each_with_index {|range, i|
test_string[range] = dates[i]
}
答案 1 :(得分:0)
这里的问题是%w会按原样转换为字符串。在控制台中尝试它,你会看到:
>> %w{1 2..4}
=> ["1", "2..4"]
转换前不会扩大范围。
答案 2 :(得分:0)
你想做什么,在这里?您尝试使用的索引是字符串而不是整数,因此无效 如果您可以解释您计划去哪里,我们可以建议另一条路线吗?