Как проверить, нет ли строки в Elixir Я имею в виду, что строка пуста, если она пуста или содержит только пробелы. Например, "," "," \n" пустые. В Rails у нас есть метод .blank?. Есть ли что-то подобное в Elixir (или Phoenix Framework)? Ответ 1 String.trim/1, похоже, делает трюк с Elixir 1.3.0. strip по-прежнему работает, но он был мягко устарел в версии 1.3.0 и не указан в документах в http://elixir-lang.org/docs/stable/elixir/String.html#functions. Ответ 2 Существует 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 Ответ 3 Я опубликовал крошечную библиотеку, чтобы сделать это правильно для любого типа данных. Он реализует то же поведение, что и метод Rails 'blank? в Эликсире, насколько это возможно. Библиотека находится здесь: https://github.com/samphilipd/blankable Чтобы установить, добавьте скрытые в список зависимостей в mix.exs: def deps do [{:blankable, "~> 0.0.1"}] end Ответ 4 почему бы просто не использовать сопоставление с образцом 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
Ответ 1 String.trim/1, похоже, делает трюк с Elixir 1.3.0. strip по-прежнему работает, но он был мягко устарел в версии 1.3.0 и не указан в документах в http://elixir-lang.org/docs/stable/elixir/String.html#functions.
Ответ 2 Существует 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
Ответ 3 Я опубликовал крошечную библиотеку, чтобы сделать это правильно для любого типа данных. Он реализует то же поведение, что и метод Rails 'blank? в Эликсире, насколько это возможно. Библиотека находится здесь: https://github.com/samphilipd/blankable Чтобы установить, добавьте скрытые в список зависимостей в mix.exs: def deps do [{:blankable, "~> 0.0.1"}] end
Ответ 4 почему бы просто не использовать сопоставление с образцом 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