7

文字列から空白を削除できません。

私のHTMLは:

<p class='your-price'>
Cena pro Vás: <strong>139&nbsp;<small>Kč</small></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:UTF-8>

__ENCODING__               => #<Encoding:UTF-8>
Encoding.default_external  => #<Encoding:UTF-8>

Ruby 1.9.3 を使用しているので、Unicode は問題になりません。

4

2 に答える 2

23

stripASCII空白のみを削除し、ここにある文字はUnicodeの改行なしスペースです。

キャラクターの削除は簡単です。gsub正規表現に文字コードを指定して使用できます。

gsub(/\u00a0/, '')

また、呼び出すことができます

gsub(/[[:space:]]/, '')

すべてのUnicode空白を削除します。詳細については、正規表現のドキュメントを確認してください。

于 2013-01-02T19:24:35.343 に答える