2015-12-03 153 views

回答

12

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

+1

如果我想在警衛內部做到這一點,該怎麼辦?在Elixir> 1.3.0中, – nicooga

+0

strip已經被軟化了。 https://github.com/elixir-lang/elixir/releases/tag/v1.3.0 – stevendaniels

+3

@nicooga如果你只是想檢查裏面的空字符串,試試: 'when binary_part(string,1, - 1)' –

3

我發佈了一個小型庫,可以針對任何數據類型正確執行此操作。它儘可能實現與Elixir中的Rails'blank?方法相同的行爲。

庫是在這裏:https://github.com/samphilipd/blankable

要安裝,添加blankable到你的依賴列表中mix.exs:

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

我只是剛開始學習藥劑,但即使作爲新手,我發現模式匹配是慣用的方式。 –

相關問題