我需要截断从URI收到的一些数据:PARSE ...它充满了html代码和数据,最后的结果就是我需要的。
这是字符串(缩写)'垃圾“结果”> Q8:0; 垃圾
截断字符串中额外内容的最佳方法是什么,这样我就可以将需要的数据拆分成变量。
提前致谢, 菲利普 pabbott@cpak.com
答案 0 :(得分:0)
我建议您使用Nokogiri
从Result
span:
require 'nokogiri'
response = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">;
<html xmlns="w3.org/1999/xhtml"><head><title>;
</title></head><body>
<form name="form1" method="post" action="tenHSServer.aspx?t=34&f=DeviceValue&d=R10" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTkzNDcxNzcwM2RkM4AHUDZdWZytDdspzLq7+FOXRfQ=" />
</div>
<span id="Result">R10:100;</span>
</form></body>
</html>'
result = nil
if doc = Nokogiri::HTML(response) rescue nil
if span = doc.css('#Result')
result = span.text
end
end
puts result
#=> R10:100;
但是,如果您不能/不想安装Nokogiri
,请改用此正则表达式:
result = response.scan(/id=["|']Result["|']>([^<]*)<\//m).flatten.first
puts result
#=> R10:100;
答案 1 :(得分:0)
首次调用sub(),删除<span id=\"Result\">
之前的所有内容
然后删除</span>
之后的所有内容,并将第二次调用留在sub()
假设您将html存储在变量mystring
中result = mystring.sub(/.*<span id=\"Result\">/,'').sub(/<\/span>.*/,'')
如果您不能总是依赖于跨度元素,则可以使用以下内容:
result = mystring.sub(/.*id=\"Result\">/,'').sub(/<\/.*/,'')