我需要截斷從URI接收的一些數據:PARSE ...它充滿了html代碼和數據,最終的結果就是我所需要的。從html字符串中截斷字符串
下面是字符串(縮寫)'垃圾「結果」> Q8:0; 垃圾
什麼是最好的方法來截斷字符串中的額外東西,以便我可以將我需要的數據分成變量。
由於提前, 菲利普 [email protected]
我需要截斷從URI接收的一些數據:PARSE ...它充滿了html代碼和數據,最終的結果就是我所需要的。從html字符串中截斷字符串
下面是字符串(縮寫)'垃圾「結果」> Q8:0; 垃圾
什麼是最好的方法來截斷字符串中的額外東西,以便我可以將我需要的數據分成變量。
由於提前, 菲利普 [email protected]
我會建議使用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&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;
response.scan(regexp)我需要什麼.. –
真的很高興你整理出來了!請考慮標記它回答 – 2012-11-26 01:48:27
刪除前夕rything直至幷包括<span id=\"Result\">
與子第一次調用() 再經過去除一切,包括從什麼留下第二次調用子()
假設真實</span>
您存儲的HTML mystring變量
result = mystring.sub(/.*<span id=\"Result\">/,'').sub(/<\/span>.*/,'')
如果你不能總是依靠的是跨越的元素,你可以使用以下命令:
result = mystring.sub(/.*id=\"Result\">/,'').sub(/<\/.*/,'')
第一個只消除了spanid,而不是前面的,因爲我想的間距。第二個消除了接近它的所有東西,但留下了上面的幾行......這些行中有一些間距沒有出現在剪切和粘貼到網站上。在html行,/標題行和
使用了上面的正則表達式....它似乎彌補了空格 –
啊好的,不用擔心,當我測試並且工作時,我只把整個字符串放在單引號中。 –
請發表您需要更新,以及你需要截斷什麼具體的整個字符串。空格?標籤?等等你的字符串的「垃圾」是什麼意思? – 2012-11-26 00:04:50
你轉貼你以前的[問題](http://stackoverflow.com/questions/13554328/trying-to-parse-string-from-a-website-that-gives-device-status-with-a-value-在-T)? – 2012-11-26 00:07:18
我想截斷它到字符串'Result'> Q8:0'。垃圾只是當前字符串中額外的東西,在我想要的這個字符串之前和之後 –