-1

我需要截断从 URI:PARSE 接收到的一些数据......它充满了 html 代码和数据,最后的结果就是我需要的。

这是字符串(缩写)' junk "Result">Q8:0; 垃圾

截断字符串中多余内容的最佳方法是什么,以便我可以将所需的数据拆分为变量。

在此先感谢 Philip pabbott@cpak.com

4

2 回答 2

0

我建议使用NokogiriResult跨度中提取您的价值:

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&amp;f=DeviceValue&amp;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;
于 2012-11-26T00:59:18.077 回答
0

删除第一次调用 sub() 之前的<span id=\"Result\">所有内容,包括</span>第二次调用 sub() 之后的所有内容

假设您将 html 存储在变量 mystring 中

result = mystring.sub(/.*<span id=\"Result\">/,'').sub(/<\/span>.*/,'')

如果您不能总是依赖跨度元素,您可以使用以下内容:

result = mystring.sub(/.*id=\"Result\">/,'').sub(/<\/.*/,'')
于 2012-11-26T01:00:19.917 回答