从Ruby String中删除

时间:2015-03-20 22:36:22

标签: ruby

我尝试解析一些数据并用清洁符号来解决问题。我知道这只是一个空间"但我真的很难从字符串清理它 我的代码:

require 'rubygems'
require 'mechanize'

agent = Mechanize.new
page = agent.get('my_page.hmtl')
price = page.search('#product_buy .price').text.to_s.gsub(/\s+/, "").gsub(" ","").gsub(" ", "")
puts price

结果我总是得到" 4 162" - 使用数据空间。不知道该怎么做。 请帮助以前遇到此问题的人。谢谢

1 个答案:

答案 0 :(得分:0)

HTML转义码对Ruby的正则表达式引擎没有任何意义。寻找" "将寻找那些文字字符,而不是稀薄的空间。相反,Ruby> = 1.8的版本支持字符串中的Unicode,这意味着您可以使用与精简空间对应的Unicode代码点来进行替换。精简空间的Unicode代码点为0x2009,这意味着您可以在Ruby字符串中将其引用为\u2009

此外,您只需致电some_string.gsub('some_string', ''),而不是致电some_string.delete('some_string')

请注意,这并不适用于所有情况,因为delete会删除其参数交集中出现的所有字符的所有实例,而gsub将仅删除与提供的模式匹配的细分。例如,'hellohi'.gsub('hello', '') == "hi",而'hellohi'.delete('hello') == 'i')

在你的具体情况下,我会使用类似的东西:

price = page.search('#product_buy .price').text.delete('\u2009\s')