我使用Nokogiri来解析HTML文档。这个问题所基于的源代码表示如下:
<td width='400' valign=top>
<b><u>Jenny ID:</u> 8675309</b><br />
Name of Place<br />
Street Address<br />
City, State, Zip<br />
Contact: Jenny Jenny<br />
Phone: 867-5309<br />
Fax:
</td>
我使用几个分隔符来检索Jenny ID:
和Name of Place
之间的文本。使用#strip
,我无法剥离前导空间。
> returned_value.inspect
=> " 8675309rn "
> returned_value.strip
=> " 8675309"
如果我使用一个测试字符串,#strip
确实删除了前后空白。
> test_string = " 11111 "
> test_tring.strip
=> "11111"
我怎样才能完全去掉这个前导空格?我怀疑这是 
,但我无法摆脱它。
我保证我在现实生活中没有这么笨,但是这个问题把我难住了。这是无情的。
谢谢!
我试着像你一样得到同样的错误,并创建了这个例子:
require 'nokogiri'
html = Nokogiri::HTML(<<-html
<td width='400' valign=top>
<b><u>Jenny ID:</u> 8675309</b><br />
Name of Place<br />
Street Address<br />
City, State, Zip<br />
Contact: Jenny Jenny<br />
Phone: 867-5309<br />
Fax:
</td>
html
)
el = html.css('b').first
txt = el.content.split(':').last
puts txt # ' 8675309'
p txt #"u00A08675309"
p txt.strip #"u00A08675309"
前导字符不是空格,而是u00A0
(Unicode字符' no - break space ' (U+00A0))。似乎strip
没有删除它。
如果显式地删除不换行空格,就会得到想要的结果。如果您将u00A0
替换为' '
(普通空格),那么您可以使用strip删除空格,而无需在字符串中删除它。
p txt.gsub("u00A0", ' ').strip #-> "8675309"
你可以选择使用(感谢mu太短)
p txt.gsub(/p{Space}/, ' ').strip
这需要UTF-8代码。没有你可能会得到Encoding::CompatibilityError.