1

現在エリクサーで取得している方法の結果として、文字列の下に取得するにはどうすればよいですか。

['x1', 'x2']

で試しましenum.joinたが、目的のデータが得られませんでした

'x1,x2'
4

2 に答える 2

3

私の理解が正しければEnum.join/2、2 番目のパラメーターを使用して「ジョイナー」を定義する必要があります。これはうまくいくはずです:

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

結果を文字リストにしたい場合は、次を使用して文字リストに変換できます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 に答える