text = ", works in St Petersburg and uses Tekhnologishesky Institut station every day. \n" + " "
text.rstrip
# => ", works in St Petersburg and uses Tekhnologishesky Institut station every day. "
最後の空白が消えない。
この空白の文字コードを調べてみる。
text.rstrip.last.bytes{ |b| print b.to_s(16) + " " }
# c2 a0 => " "
c2 a0
らしい。to_s(16)
で16進数にしているため、16進数を意味する0xC2 0xA0
でググってみる。
ヒット
UTF-8 encoding table and Unicode characters
ruby NO-BREAK SPACE
でググる。
ヒット
How do I remove a non-breaking space in Ruby
irb(main):001:0> d = "foo\u00A0\bar"
# => "foo \bar"
irb(main):002:0> d.gsub("\u00A0", "")
# => "foo\bar"
とのこと。
text.rstrip.gsub("\u00A0", "")
# => ", works in St Petersburg and uses Tekhnologishesky Institut station every day."
完了。
追記。
ソースコード中に0xC2A0(UTF-8のNO-BREAK SPACE)が混ざり実行できなくて困った話
「半角スペースらしき空白」は NO-BREAK SPACE という文字で htmlで使う
と同じもの。表示する分には(レイアウトなどに気を付ける必要はあるものの)特に問題はないが、ソースコードの空白としては不適切。
本文の C2A0 を半角スペース 20 に置換してやる事でソースコードはソースコードとしてよみがえる。
だったのか。一旦gsub
で置換した後にrstrip
したほうが良さそう。
text.gsub("\u00A0", "").rstrip