如何找出Elixir中整个字符串是否为大写?

J. *_*018 4 regex string elixir uppercase

如何判断Elixir中的整个字符串是否为大写?

我在这里找到了解决方案.但它一次只能处理一个字母而不是整个字符串.

Dog*_*ert 22

您可以将字符串转换为大写,并检查它是否等于原始字符串:

iex(1)> upcase? = fn x -> x == String.upcase(x) end
#Function<6.99386804/1 in :erl_eval.expr/5>    
iex(2)> upcase?.("foo")
false
iex(3)> upcase?.("FOO")
true
iex(4)> upcase?.("?")
false
iex(5)> upcase?.("?")
true
Run Code Online (Sandbox Code Playgroud)

  • `upcase?= && 1 == String.upcase(&1)` (3认同)
  • 我很好奇你为什么使用 lambda 。不是批评,只是想理解你的推理。我已经将其作为 `defp upcase?(input), do: input == String.upcase(input)` 完成,并且想知道 lambda 的增益是多少。 (2认同)

Sir*_*keh 5

您可以使用正则表达式:

iex> str = "Hello World"
iex> str =~ ~r(^[^a-z]*$)
false

iex> str = "HELLO WORLD"
iex> str =~ ~r(^[^a-z]*$)
true
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这仅适用于 ASCII 字母。`"π" =~ ~r(^[^az]*$) #=&gt; true` 但`π` 是`Π` 的小写。 (4认同)