我想从我的另一个网站解析一些项目。
def self.run
...
parsed_response = JSON.parse(response.body)
parsed_response.each do |item|
t = Page.new(:title => item["title"], :body => item["body"], :format_type => item["format_type"])
t.body.gsub!("Some text", "Other text")
t.save
end
end
在弦体中有一些数字和公式:120 $; 130美元; 20 $ + 30 $ = 50 $等
我想添加每个数字10.但我怎么能这样做?
即使我添加到每个数字10,公式中的总和也必须大于10。
所以我必须在=之后删除总和并放置计算的总和。
提前致谢。
P.S。 这些数字很多而且动态。 我给出的数字作为随时间变化的一个例子。
答案 0 :(得分:1)
这应该有效
def is_a_number?(s)
s.to_s.match(/\A[+-]?\d+?(\.\d+)?\Z/) == nil ? false : true
end
str = "120 $; 130 $; 20 $ + 30 $ = 50 $"
str_parts = str.split(" ")
equals_indices = str_parts.each_index.select{|i| str_parts[i] == "="}
str_parts.each_with_index do |p,i|
if is_a_number?(p)
#non-sum numbers
if (str_parts[i-1] != "=")
str_parts[i]=(p.to_i+10).to_s
#sums
else
prior_equals_index = equals_indices.select{|ind| ind < i-1}.max || 0
n_pluses = str_parts[prior_equals_index,i].count("+")
str_parts[i]=(p.to_i+(n_pluses+1)*10).to_s
end
end
end
add_10_str = str_parts.join(" ")
=&GT; “130 $; 140 $; 30 $ + 40 $ = 70 $”