【问题标题】:Truncate String from html string从 html 字符串中截断字符串
【发布时间】:2012-11-26 00:02:05
【问题描述】:

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

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

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

提前致谢, 菲利普 pabbott@cpak.com

【问题讨论】:

  • 请发布您需要更新的整个字符串以及您需要截断的具体内容。空格?标签?等等你的字符串周围的“垃圾”是什么意思?
  • 你在转发你之前的question吗?
  • 我想将它截断为字符串 'Result">Q8:0'。垃圾只是我想要的这个字符串之前和之后的当前字符串中的额外内容。
  • 好的,我们如何猜测你的字符串周围有什么垃圾?是不是字面上的“垃圾”,你不能简单地string.gsub(/\Ajunk|junk\Z/, '')吗?
  • 好的,我们如何猜测这里的结果是什么,什么不是?如果总是在<span id="Result">...</span> 里面,我会发布如何提取它的答案

标签: ruby rubygems


【解决方案1】:

我建议使用NokogiriResult 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&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;

【讨论】:

  • 真的很高兴你解决了这个问题!请考虑将其标记为已回答
【解决方案2】:

在第一次调用 sub() 时删除包括 &lt;span id=\"Result\"&gt; 在内的所有内容 然后从第二次调用 sub() 剩下的内容中删除包括 &lt;/span&gt; 之后的所有内容

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

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

如果你不能总是依赖跨度元素,你可以使用以下方法:

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

【讨论】:

  • 第一个仅消除了 spanid 而不是前面的,因为我想是间距。第二个消除了靠近它的所有内容,但留下了上面的线条......其中一些线条之间的间距没有出现在我的剪切和粘贴到网站上。 html 行、/title 行和
  • 啊好的,不用担心。当我测试时,我只是把你的整个字符串放在单引号中,这很有效。
猜你喜欢
  • 2015-04-18
  • 1970-01-01
  • 1970-01-01
  • 2016-12-22
  • 2014-09-14
  • 2015-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多