我解析下面的行
<em></em>">Markov, Andrei</a>
根据以下输出,索引的行为始终不一样
Markov, Andrei
Markov, Andrei</a>
这是我的代码
line_list.each do |line|
if line.include? name
start = line.index('>') + 1
finish = line.index('<', start) - 1
elem = line[start,finish]
puts line
for i in(start..finish)
print line[i]
end
puts
puts elem
puts
end
end
答案 0 :(得分:4)
执行此操作时:
for i in(start..finish)
print line[i]
end
您将从索引start
转到finish
。当你这样说:
elem = line[start,finish]
您从索引start
开始,然后获取finish
个字符,而不是索引finish
。
来自fine manual:
如果传递单个
Fixnum
,则返回该位置的一个字符的子字符串。如果传递了两个Fixnum
个对象,则返回从第一个给定的偏移量开始的子字符串,以及第二个给出的长度。
答案 1 :(得分:-2)
你应该使用正则表达式! http://www.ruby-doc.org/core/classes/Regexp.html
更新这里是代码
line_list.each do |line|
elem = line.match(/<a[^>]*>(.*)<\/a>/)[1]
end