LoginSignup
3
3

More than 5 years have passed since last update.

Rubyのrstripで消えない空白の対処法

Last updated at Posted at 2017-04-16
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

Screen Shot 2017-04-16 at 16.01.16.png

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
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3