2

我遇到了一个奇怪的角色(使用 Nokogiri)。

irb(main):081:0> sss.dump
=> "\"\\u{a0}\""
irb(main):082:0> puts sss 

=> nil 
irb(main):083:0> sss 
=> " " 
irb(main):084:0> sss =~ /\s/
=> nil 
irb(main):085:0> sss =~ /[[:print:]]/
=> 0
irb(main):087:0> sss == ' ' 
=> false
irb(main):088:0> sss.length
=> 1

知道这个奇怪的角色是什么吗?

当它显示在网页中时,它是一个空格,但它与使用正则表达式的空格 \s 不匹配。Ruby 甚至认为这是一个可打印的字符!

如何检测这样的字符并将它们排除或将它们标记为空格(如果可能)?

谢谢

4

1 回答 1

2

这是非破坏空间。在 HTML 中,它被非常频繁地使用并且通常写成  。找出类似字符身份的一种方法"\u{a0}"是在网上搜索U+00A0(使用四个或更多十六进制数字),因为 Unicode 规范就是这样标记 Unicode 代码点的。

不间断空格和其他类似的内容包含在 regex 中/[[:space:]]/

于 2013-03-01T13:29:28.650 回答