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