【发布时间】:2018-12-16 14:38:24
【问题描述】:
我的 ruby 脚本中有这个哈希表
Table2 = {
'Parameters' => {
"#{splist[i]}" => {
'Description' => "#{splist[i+1]}",
'Type' => 'String',
'Default' => "#{splist[i+2]}"
},
"#{splist[i+3]}" => {
'Description' => "#{splist[i+4]}",
'Type' => 'String',
'Default' => "#{splist[i+5]}"
},
"#{splist[i+6]}" => {
'Description' => "#{splist[i+7]}",
'Type' => 'String',
'Default' => "#{splist[i+8]}"
},
"#{splist[i+9]}" => {
'Description' => "#{splist[i+10]}",
'Type' => 'String',
'Default' => "#{splist[i+11]}"
}
}
}
我将在脚本中进一步转换为 JSON,它几乎可以按预期工作。但由于某种原因,它在 Default 行中附加了一个“\n”。像这样
"Default": "10.0.0.0/16\n"
我怎样才能避免这种情况发生?
谢谢!
【问题讨论】:
-
你试过使用String#chomp吗?示例:
'Default' => "#{splist[i+11].to_s.chomp}" -
问题是缺少关键信息:
splist[i+2](或splist[i+5],....或更可能,splist[i+11])中有什么,它是如何到达那里的? -
看不出这有多重要。它导致一个带有换行符的字符串,因为它显然有一个换行符。删除换行符似乎是一个安全的赌注,无论是在这里还是那里并不真正相关。
-
@ForeverZer0:删除换行 here... 有效。删除换行 earlier 可能会产生更好、更易读和更合乎逻辑的代码。 (我的猜测是换行符在最后一个
splist[i+11]中,而splist是split的结果;在这种情况下,chomp行预拆分会更有意义,而不是处理splist[i+11]作为规则的一个例外。) -
@Amadan 可能,假设那里不需要换行符。无论哪种方式,它都没有相关的区别,并且很难被归类为阻止回答问题的“缺少关键信息”。我假设 OP 可以弄清楚如何将最相关和最优雅的位置添加到他们的代码中。我个人更喜欢学习如何使用工具来解决问题,不一定要一字不差地告诉你在哪里写什么。我不反对尽早修复可能是最好的解决方案,只是说对学习不重要。
标签: json ruby variables hash rubygems