Вопрос по nokogiri, whitespace, mechanize, mechanize-ruby, ruby – Я не могу удалить пробелы из строки, проанализированной Nokogiri

7

Я могу'удалить пробелы из строки.

Мой HTML это:

<p class="your-price">
Cena pro Vás: <strong>139 Kč</strong>
</p>

Мой код :,

#encoding: utf-8
require 'rubygems'
require 'mechanize'

agent = Mechanize.new
site  = agent.get("http://www.astratex.cz/podlozky-pod-raminka/doplnky")
price = site.search("//p[@class='your-price']/strong/text()")

val = price.first.text  => "139 "
val.strip               => "139 "
val.gsub(" ", "")       => "139 "

gsubstripи т. д. нет работа. Почему и как мне это исправить?

val.class      => String
val.dump       => "\"139\\u{a0}\""      !
val.encoding   => #

__ENCODING__               => #
Encoding.default_external  => #

использую Ruby 1.9.3, поэтому Unicode не долженэто не проблема.

Совет: вместо этого XPath вы можете использовать.val = site.at('p.your-price > strong').text Phrogz
Да, но CSS не моя чашка чая. :) A.D.

Ваш Ответ

1   ответ
22

strip только удаляетASCII пробел и характер выу нас есть Unicode без перерыва.

Удалить персонажа легко. Ты можешь использоватьgsub предоставив регулярное выражение с кодом символа:gsub(/\u00a0/, '')

Вы также можете позвонитьgsub(/[[:space:]]/, '') удалить все пробелы Unicode. Для деталей, проверьтедокументация

Альтернативой является использованиеgsub(' ', '') или жеgsub(' ', ' ') перед разбором и получить их все за один проход. the Tin Man
@ Том а?/\s+/u A.D.
@ОБЪЯВЛЕНИЕ./\s/ только для ASCII "" toniedzwiedz
Вы также можете использовать\p{Space} в качестве альтернативы[[:space:]] если вы предпочитаете (я думаю, что онито же самое). matt

Похожие вопросы