没有从nil到整数的隐式转换
我有一个从html和使用split函数创建的字符串数组。 我试图通过以下方式迭代它:
html_array.each do |line| ... end
我可以使用puts line.index('text')
每个line
中的字符串索引puts line.index('text')
,并且我可以puts
字符放在带有puts line[17]
的索引处(两者都不打印nil),但是当我合并时二合一命令就好
puts line[line.index('text')]
它给了我错误:
no implicit conversion from nil to integer (TypeError)
有人可以告诉我我做错了什么吗? 我是编程和ruby btw的新手。
line.index('text')
在某些时候返回nil
,因为在行中找不到字符串“text”。 然后,您尝试访问line[nil]
,这是一个无效的数组索引。
这样的事情可能会更好:
index = line.index('text') if index.nil? puts "Text not found" else puts line[index] end
这将在尝试使用之前检查字符串的索引是否为nil(并且如果该行不包含该字符串将提醒您)。
只是为了追踪你的某些行是否有错误,请尝试:
html_array.each do |line| puts (line[line.index('text')] rescue "nil") end
这将为每一行打印一个“nil”,这是一个错误。 我怀疑每行都没有出现“文字”。 你能分享一下你想要完成的事情吗?
您可以轻松地完成以下操作:
html_array.each do |line| if line.index("Text").present? puts line[line.index("Text")] end end