-1

URI:PARSE から受信した一部のデータを切り詰める必要があります...それは html コードとデータでいっぱいです。最後の結果が必要です。

文字列 (省略) は次のとおりです。ジャンク

必要なデータを変数に分割できるように、文字列内の余分なものを切り捨てる最良の方法は何ですか。

前もってありがとう、Philip pabbott@cpak.com

4

2 に答える 2

0

スパンNokogiriから値を抽出するために使用することをお勧めします:Result

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

<span id=\"Result\">sub()への最初の呼び出しで含まれるものまでのすべてを削除します。次に</span>、sub()への2番目の呼び出しで残っているもの以降のすべてを削除します。

HTMLを変数mystringに格納するとします

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

スパンである要素に常に依存できるとは限らない場合は、次を使用できます。

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