我的意思是一個字符串是空的,如果它是空的或只包含空格。 例如,""
," "
和"\n"
都是空白。如何檢查一個字符串是否在Elixir中爲空
在Rails中,我們有.blank?
方法。
Elixir(或Phoenix Framework)中是否有類似的東西?
我的意思是一個字符串是空的,如果它是空的或只包含空格。 例如,""
," "
和"\n"
都是空白。如何檢查一個字符串是否在Elixir中爲空
在Rails中,我們有.blank?
方法。
Elixir(或Phoenix Framework)中是否有類似的東西?
String.trim/1似乎這樣的伎倆作爲藥劑1.3.0。
strip
仍然有效,但它是軟棄用in the 1.3.0 release並沒有在文檔在http://elixir-lang.org/docs/stable/elixir/String.html#functions上市。
有String.strip/1它將您的3個例子轉換爲""
,你可以比較。
iex(4)> String.strip("\n") == ""
true
iex(5)> String.strip("") == ""
true
iex(6)> String.strip(" ") == ""
true
我發佈了一個小型庫,可以針對任何數據類型正確執行此操作。它儘可能實現與Elixir中的Rails'blank?
方法相同的行爲。
庫是在這裏:https://github.com/samphilipd/blankable
要安裝,添加blankable到你的依賴列表中mix.exs:
def deps do
[{:blankable, "~> 0.0.1"}]
end
爲什麼不直接使用模式匹配
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
我只是剛開始學習藥劑,但即使作爲新手,我發現模式匹配是慣用的方式。 –
如果我想在警衛內部做到這一點,該怎麼辦?在Elixir> 1.3.0中, – nicooga
strip已經被軟化了。 https://github.com/elixir-lang/elixir/releases/tag/v1.3.0 – stevendaniels
@nicooga如果你只是想檢查裏面的空字符串,試試: 'when binary_part(string,1, - 1)' –