我正在尝试创建一个应用程序,用户可以使用化学元素转换他的名字或单词(比如打破坏标识)。经过这里的几个问题,尝试和长时间的反思,我有点找到了#34;理想的"解决方案...... (我希望......)
我希望如果我输入 acalam 来显示以下内容:
如果没有符号匹配,我会保留初始条目,因此可能是: 你好=> 他 ll O (粗体字符代表现有的化学符号)
我的模型看起来像这样(现在只是几个符号)
class Convertor < ActiveRecord::Base
def get_chemical
symbols = {
"ac" => {
:chem_name => "Actinium",
:number => 89,
:symbol => "Ac",
:molar => 227
},
"al" => {
:chem_name => "Aluminium",
:number => 13,
:symbol => "Al",
:molar => 26.981539
},
"am" => {
:chem_name => "Americium",
:number => 95,
:symbol => "Am",
:molar => 243
}
}
#not sure how to use this
result=[]
symbols.each do |key, value|
value.each do |key2, value2|
result << value2
end
result
end
name.downcase.gsub!(Regexp.union(symbols.keys), symbols)
end
end
这个视图
.col-xs-12
.number
= @convertor.get_chemical # plus something?
.symbol
= @convertor.get_chemical # plus something?
.molar
= @convertor.get_chemical # plus something?
.chem_name
= @convertor.get_chemical # plus something?
答案 0 :(得分:1)
符号长一两个字符?您必须先决定要先搜索哪两个:让我们说2个字符,然后是1.
对于&#34;你好&#34;
在哈希中搜索下一个不匹配的对:他,因为是哈希,你不必循环,只需询问symbols.include? 'He'
是否转移到下一个不匹配的对。如果没有,请搜索&#39; H&#39;单独重复。
第一个&#39; l&#39;来了,它不匹配,&#39; ll&#39;也不匹配,只需返回&#39; l,与第二个&#39;相同。你最终得到了
他 l l O
当哈希包含你想要的符号时,只需返回它:
lookup = 'He'
symbols[lookup]
symbols[lookup][:chem_name]