Ответ 1
String.trim/1, похоже, делает трюк с Elixir 1.3.0.
strip
по-прежнему работает, но он был мягко устарел в версии 1.3.0 и не указан в документах в http://elixir-lang.org/docs/stable/elixir/String.html#functions.
Я имею в виду, что строка пуста, если она пуста или содержит только пробелы. Например, "," "," \n" пустые.
В Rails у нас есть метод .blank?
.
Есть ли что-то подобное в Elixir (или Phoenix Framework)?
String.trim/1, похоже, делает трюк с Elixir 1.3.0.
strip
по-прежнему работает, но он был мягко устарел в версии 1.3.0 и не указан в документах в 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
Об этом шла проблема https://github.com/elixir-lang/elixir/pull/2707
Я опубликовал крошечную библиотеку, чтобы сделать это правильно для любого типа данных. Он реализует то же поведение, что и метод Rails 'blank?
в Эликсире, насколько это возможно.
Библиотека находится здесь: https://github.com/samphilipd/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