我需要截断从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'。垃圾只是当前字符串中额外的东西,在我想要的这个字符串之前和之后 –