如何从红宝石中的字符串中删除短语?
我不确定我的问题的名称。我有一个使用nokogiri的HTML页面。现在我想从该页面中删除一些标签。将html转换为字符串后,我尝试使用ruby的删除方法 - 虽然它删除了我输入的所有字母。我得到的最好结果是使用.gsub('<stuff>', '')
虽然它仍然留下一些空间。是否有可能实际切割一个字符串的东西?具体的pharses? 另一个问题 - 我可以删除空格吗?如何从红宝石中的字符串中删除短语?
是我迄今所做的:
doc = Nokogiri::HTML(open("http://www.example.com/"))
tester = doc.css(".example").to_s.gsub('<div class="example">', '')
我建议尝试在XML树水平,而不是字符串编辑做到这一点。 我认为nokogiri api为你提供了一些工具。
另一种方法可能是使用css或xpath选择想要的数据,而不是删除不需要的部分?
还有字符串中的标准化空间的XPath功能,有一个例子in this question
一些引入nokogiri帮助:
如何在xml树级别执行此操作?我真的很想明白,并且我真的没有得到nokigiri的xml api ... – Ariel 2011-03-10 21:32:03
它给了你一个节点集,然后你像树一样导航。我添加了一些教程链接到答案。这个API可能会很棘手,但是花一些时间来玩它(在IRB中),如果你再次使用Ruby或XML解析Ruby(以及其他许多库在后台使用它),你会发现它非常有用。 – nruth 2011-03-10 21:37:04
+1用于处理XML树。如果你开始在XML/HTML中使用正则表达式,你会遇到很多麻烦。Nokogiri知道的非常重要,它在任何语言中几乎都是用于遍历/替换标签的。 – 2011-03-10 21:51:34
查看Nokogiri的教程。特别是,你想读"Modifying an HTML/XML Document", Changing text contents。
Nokogiri的XML访问器非常友好,因为您不需要使用XPath。你也可以使用CSS访问器,对于那些不是XML的人来说,他们可以帮助很多。
在该特定示例中,他们使用at_css
方法,该方法搜索目标的第一个匹配项。您有许多替代方法,它们是同义词:at
,%
,at_css
和at_xpath
处理“找到第一个”的情况。 search
,css
,xpath
, /
类似地处理“查找所有事件”。
例如:
require 'nokogiri'
html = '<h1>Snap, Crackle and Pop</h1>'
doc = Nokogiri::HTML(html)
h1 = doc.at('h1')
h1.content = h1.content[0, h1.content.length - 3] + '...'
puts doc.to_html
>> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
>> <html><body><h1>Snap, Crackle and ...</h1></body></html>
这创造了一个引入nokogiri新的HTML文档,搜索第一H1,并修剪后的3个字符的内容,以省略号代替它们。
意思短语。对不起,拼写错误。 – Ariel 2011-03-10 21:28:40
你能否给出一些简单的实际输入和输出数据,这可以解释你想在这里实现什么东西? – Dogbert 2011-03-10 21:46:31
如果你需要帮助,请做Dogbert说的话。你的问题还不够清楚。 – Phrogz 2011-03-13 18:42:15