2

変なキャラ(ノコギリ使用)に遭遇。

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

この奇妙なキャラクターは何か分かりますか?

Web ページに表示される場合は空白ですが、正規表現を使用した空白 \s と一致しません。ルビーはそれを印刷可能な文字だとさえ思っています!

このような文字を検出して除外するか、可能であれば空白としてフラグを立てるにはどうすればよいですか?

ありがとう

4

1 に答える 1

2

それは非改行スペースです。HTML では、かなり頻繁に使用され、  として記述されることがよくあります。のような文字のアイデンティティを見つける 1 つの方法"\u{a0}"は、Web を検索することですU+00A0(4 桁以上の 16 進数を使用)。これは、Unicode 仕様が Unicode コード ポイントを記す方法であるためです。

改行しないスペースなどは regex に含まれてい/[[:space:]]/ます。

于 2013-03-01T13:29:28.650 に答える