【发布时间】:2016-10-04 23:29:08
【问题描述】:
我仍在尝试创建一个应用程序,用户可以在其中使用化学元素转换他的名字或单词(例如破坏坏徽标)。
用户将在文本字段中输入一个单词,当他提交它时,如果它们匹配,它将返回带有相应化学符号的单词,或者如果它们不匹配,它将显示“原始”字母。
例如:如果没有符号匹配,我将保留初始条目,因此可能是:hello => He ll O(粗体字符代表现有的化学符号)
我知道这可以在 js 中完成,但挑战是 ROR(顺便说一句,我不知道任何 js...)
在较早的问题中,我只有一个像这样的哈希:
symbols =
{"cr" => "Cr",
"sb" => "Sb",
"ag" => "Ag",
"ar" => "Ar",
"as" => "As",
"at" => "At",
"n" => "N",
"ba" => "Ba",
"bk" => "Bk"}
我使用name.downcase.gsub!(Regexp.union(symbols.keys), symbols) 来转换用户条目。其实我需要更多的数据...这就是我选择 json 文件的原因。
就像这张照片我需要使用:
- “号码”
- “小”
- “摩尔”
(“名称”会出现在下方的标题中)
我已经组织了一个 .json 文件,其中包含我在应用程序中可能需要的所有符号,并将其存储在我的 config/periodic_table.json 中(仅粘贴一个示例,因为它很长)。
1°) 如果用户输入“hello”,我如何循环搜索“he”哈希并打印“name”、“number”、“small”和“molar”
2°)我将使用 json 作为数据库(我将使用 heroku 进行部署),那么我有什么要转换的以同时使用 json 和 pg 吗?
[ "symbols"
{
"h": {
"name": "Hydrogen",
"number": 1,
"small": "H",
"molar": 1.00794
},
"he": {
"name": "Helium",
"number": 2,
"small": "He",
"molar": 4.002602
},
"b": {
"name": "Boron",
"number": 5,
"small": "B",
"molar": 10.811
},
"c": {
"name": "Carbon",
"number": 6,
"small": "C",
"molar": 12.0107
},
"n": {
"name": "Nitrogen",
"number": 7,
"small": "N",
"molar": 14.0067
}
}
]
我需要先循环使用包含 3 个字符的符号,然后是 2,然后是 1... 我是否应该更改 json 中的任何内容,例如包含 3 个字符的哈希的 harray,另一个用于 2 个字符的哈希,以及1 个字符?
【问题讨论】:
-
我有一个不相关的问题-但自从我阅读您的第一篇文章以来我一直在考虑这个问题-您打算如何处理,例如,南希,您会选择 N 代表氮还是 Na对于钠 - 这只是一个例子 - 但我很好奇你打算如何处理它 - 并使用你的例子 - 你如何选择使用氦代替氢气而不是氢气?
-
我在您询问时编辑了我的帖子,我相信...它需要循环并搜索具有 3 个字符、2 个字符、1 个字符的符号
-
嗯,我很奇怪 - 所以我会将输入字符串转换为数组 - 我会颠倒顺序 - 然后我会编写某种递归循环(我不擅长那些东西)以三个开头,如果它有效,则将所有三个都弹出 - (或者你可以使用切片 - 我只是不擅长切片),如果它不起作用 - 检查两个 - 检查一个 - 然后默认- 可能运行一个复杂的案例语句?我可以在我的大脑中看到如何做到这一点,但我无法编写代码:)
-
我也有这个想法,但是我还没有找到代码
-
你不会“找到”代码 - 你必须编写它 - 一旦你分解它,它就是非常基本的 ruby 东西 - 只需写出你的伪代码
标签: ruby-on-rails json ruby ruby-on-rails-4