如何操作Elixir中枚举的char列表中的单个字符?

时间:2014-12-05 07:16:48

标签: elixir

假设我想通过类似filter的组合器传递枚举字符列表,以便删除所有类似的字符:

'abc' |> Enum.filter(fn ch -> ch != 'a' end)

这不会返回预期的结果,因为枚举的字符实际上是代码点,这里是97,99和99.所以谓词可以表示为ch != 97<<ch::utf8>> != "a"来实现所需的结果。
在这种情况下是否有更好,更直观的表达谓词的方式?

2 个答案:

答案 0 :(得分:6)

您可以使用?

iex(1)> 'abc' |> Enum.filter(fn ch -> ch != ?a end)
'bc'

答案 1 :(得分:1)

你也可以这样做:

'abc' |> Enum.filter(fn ch -> [ch] != 'a' end)

虽然我更喜欢使用?a,但我更喜欢在字符列表中使用二进制文件。