2015-12-03 24 views
17

文字列が空であるか空白だけが含まれている場合、文字列が空白であることを意味します。 たとえば、""," "および"\n"はすべて空白です。エリクシールで文字列が空白かどうかを確認する方法

Railsでは、.blank?メソッドがあります。

エリクサー(またはフェニックスフレームワーク)に類似したものはありますか?

答えて

12

あなたの3つの例を比較できる""に変換するString.strip/1があります。

iex(4)> String.strip("\n") == "" 
true 
iex(5)> String.strip("") == "" 
true 
iex(6)> String.strip(" ") == "" 
true 

それについての問題https://github.com/elixir-lang/elixir/pull/2707

+1

ガードの中でそれをしたいのですが? – nicooga

+0

ストリップはElixir> 1.3.0でソフト非難されました。 https://github.com/elixir-lang/elixir/releases/tag/v1.3.0 – stevendaniels

+3

ガードの中の空の文字列をチェックしたい場合は、次のようにしてください: 'binary_part(string、1、 - 1) ' –

3

すべてのデータ型に対して適切にこれを行うための小さなライブラリを公開しました。これは可能な限りElksirのRails 'blank?メソッドと同じ動作を実装しています。

ライブラリはここにある:https://github.com/samphilipd/blankable

mix.exsで依存関係のリストにblankable追加し、インストールするには:

def deps do 
    [{:blankable, "~> 0.0.1"}] 
end 
1

はなぜちょうど

iex> a = "" 
"" 
iex> b = "b" 
"b" 
iex> ^b = "b" 
"b" 
iex> ^a = "your String" 
** (MatchError) no match of right hand side value: "" 
iex> ^a = "" 
"" 

またはより良いパターンマッチングを使用していませんバイトサイズを確認する

iex> if byte_size("") == 0 do true else false end 
true 
iex> if byte_size("a") == 0 do true else false end 
false 
+0

私はちょうどElixirの学習を始めましたが、初心者でもパターンマッチングが慣用的な方法であることがわかりました。 –

関連する問題