2017-03-06 4 views
0

私はちょっと変わった質問がありますが、私はあらゆる種類のエリクシルのドキュメンテーションと教科書をこれに答えて何も出ていません。エリクシールのテキストファイルからリストを抽出する

私はリスト形式でデータを含む一連の.txtファイルを持っています。だから、.txtファイルの内容は、(ブラケット含む)のようになります。

[a, [a, b], c, [d, e, f], g] 

私はエリクシール関数にこのファイルを読めば、それは文字列として読み込まれます。 String.tolistを使用すると、新しいリストの項目として角括弧が含まれます。しかし、これをリストとして読み込む方法はありますか?ファイルに書かれているようにフォーマットされていますか?明らかに、Regexを使って文字を1文字ずつ読み込む機能を簡単に書くことができました。新しい括弧を見つける度に新しいリストを開始し、括弧が見つかるたびにリストを終了します。しかし、これは非常に資源集約的で、非常に「エリクシール」ではないようです。

Elixirには、角かっこを認識し、データを文字単位で読み込むことなくリストとしてフォーマットする組み込み関数またはコマンドがありますか?それとも、私より賢い人が、これを行うより効率的な方法を知っていますか?ありがとう!

答えて

2

ファイル内のテキストが有効なエリクシールコードの場合、文字列が正確に引用されていない限りCode.eval_stringを使用することができます。 エリクシールファッションの場合、動作しない可能性があります。

すなわち、あなたの例のデータは次のようになりなければならないでしょう:

["a", ["a", "b"], "c", ["d", "e", "f"], "g"] 

あなたはすべて引用を行うためのパーサを構築することができますが、それまでにあなたが本当のパーサーへ 既に半分の方法です。文字列は何かによって解析される必要があります。組み込みのElixirパーサを使用すると、コードが少なくても が記述されます。

+0

これは実際には完璧です。これを指摘してくれてありがとう! –

関連する問題