web-dev-qa-db-ja.com

Elixirで文字列が空白かどうかを確認する方法

つまり、空の文字列または空白のみが含まれている文字列は空白です。例えば、 """ "および"\n"はすべて空白です。

Railsでは、.blank? 方法。

Elixir(またはPhoenix Framework)に類似したものはありますか?

25
Van Huy

String.trim/1 は、Elixir 1.3.0以降のトリックを実行しているようです。

stripは引き続き動作しますが、非推奨になりました 1.3.0リリース であり、 http://elixir-lang.orgのドキュメントにはリストされていません/docs/stable/elixir/String.html#functions

26
Jason Harrison

String.strip/1 があります。これは、3つの例を""に変換し、比較できます。

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

それについて問題がありました https://github.com/elixir-lang/elixir/pull/2707

15
Gazler

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

ライブラリはこちら: https://github.com/samphilipd/blankable

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

def deps do
  [{:blankable, "~> 0.0.1"}]
end
6
Sam Davies

パターンマッチングを使用しない理由

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