1

由于我现在在长生不老药中得到它的方式,我如何才能得到低于字符串的结果。

['x1', 'x2']

我试过enum.join但没有得到想要的数据

'x1,x2'
4

2 回答 2

3

如果我理解正确,您应该使用Enum.join/2第二个参数来定义“joiner”。这应该工作:

arr = ['x1', 'x2']
Enum.join(arr, ",")
# => "x1,x2"

如果您希望结果为 char 列表,可以使用以下命令将其变为 1 String.to_char_list/1

String.to_char_list(Enum.join(arr, ","))
# => 'x1,x2'

Enum.reduce/2另一种选择是显式使用和添加连接器:

Enum.reduce(arr, &(&2 ++ ',' ++ &1))               
# => 'x1,x2'
于 2014-08-11T06:56:23.360 回答
2

join这是单引号字符串的经典递归实现:

defmodule MyString do
  def join(list, joiner \\ ''), do: do_join(list, joiner)
  defp do_join([], joiner), do: ''
  defp do_join([hd], joiner), do: hd
  defp do_join([hd | tl], joiner), do: hd ++ joiner ++ join(tl, joiner)
end

iex> MyString.join([], ',')
[]

iex> MyString.join(['x1'], ',')
'x1'

iex> MyString.join(['x1', 'x2'], ',')
'x1,x2'

iex> MyString.join(['x1', 'x2'])
'x1x2'
于 2014-08-11T08:44:57.550 回答