2015-12-03 12 views

Antwort

12

Es gibt String.strip/1, die Ihre 3 Beispiele in "" konvertieren, mit denen Sie vergleichen können.

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

Es gab ein Problem darüber https://github.com/elixir-lang/elixir/pull/2707

+1

Was, wenn ich das in einer Wache machen möchte? – nicooga

+0

Streifen wurde in Elixir> 1.3.0 soft-deprecated. https://github.com/elixir-lang/elixir/releases/tag/v1.3.0 – stevendaniels

+3

@nicooga wenn Sie nur nach leeren Saiten innerhalb der Wache suchen möchten, versuchen Sie: 'wenn binary_part (string, 1, - 1) ' –

3

Ich habe eine kleine Bibliothek veröffentlicht, um dies für jeden Datentyp richtig zu machen. Es implementiert das gleiche Verhalten wie Rails blank? Methode in Elixir so weit wie möglich.

Bibliothek ist hier: https://github.com/samphilipd/blankable

zu installieren, fügen Sie blankable in die Liste der Abhängigkeiten in mix.exs:

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

warum nicht nur Muster verwenden

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

oder besser passende noch überprüfen Sie die Byte-Größe

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

Ich habe gerade erst angefangen, Elixir zu lernen, aber selbst als Neuling finde ich die Mustererkennung als den idiomatischen Weg. –

Verwandte Themen