2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Railsのblank?が優秀だった

Last updated at Posted at 2019-10-01

背景

Railsでアプリケーションを作っていて、空文字判定の実装をしました。
当然 blank? を使用したわけですが、思ったより優秀で驚いた話です。

String.blank? の動作

空文字

一番ベーシックなタイプです。これは当然true。

irb(main):001:0> ''.blank?
=> true

半角スペース

これも可能なら対応してもらいたいところだが... → true

irb(main):002:0> ' '.blank?
=> true

半角スペース(複数)

これはブランクと言えるのか...? → true

irb(main):003:0> '              '.blank?
=> true

全角スペース

これは流石に... → true

irb(main):004:0> "\u3000".blank?       
=> true

全角スペース(複数)

もうわかってきた。これはtrue! → true

irb(main):005:0> "\u3000\u3000\u3000\u3000".blank?
=> true

改行

まさかこれも...? → true

irb(main):014:0> '              
irb(main):015:0' '.blank?
=> true

全角スペース + 改行

falseにしたい...! → true

irb(main):022:0> "
irb(main):023:0' \u3000
irb(main):024:0' 
irb(main):025:0' ".blank?
=> true

文字列「aaa」

少し心配になってきたので、念のため... → false

irb(main):006:0> 'aaa'.blank?
=> false

Rubyのメソッドではなくて、Railsで実装されている

これはrailsで実装されているのであって、Rubyでは使えません。

irb(main):001:0> ''.blank?
Traceback (most recent call last):
        2: from /Users/yoshinori/.rbenv/versions/2.5.3/bin/irb:11:in `<main>'
        1: from (irb):1
NoMethodError (undefined method `blank?' for "":String)

終わりに

文字列か有効かどうか判断するのに 'blank?' が優秀なことがわかりました。
'present?' は 'blank?' の真逆になります。
すごく便利。

2
0
2

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?