4

問題: ファイルの内容 (サイズが 1MB 未満) を Erlang 変数に読み込み、テキストの置換を行い、変更された内容を新しいファイルに書き込みたい。私は Erlang を初めて使用し、エラー処理のない単純なコードを使用したいと考えています (Erlang シェルから使用します)。

私が試してみました:

File = file:read_file("pbd4e53e0.html").

でも使うときは

string:len(File).

私は得る

例外エラー: string:len/1 からの呼び出しで length({ok,<<">}) として呼び出される関数 length/1 の不正な引数 (string.erl、66 行目)。

次のステップは交換を行うことです:

re:replace(File, "<a href=\'pa", "<a href=\'../pa/pa", [{return, list}]).

質問 1: ファイルを Erlang 変数に読み込むにはどうすればよいですか?

質問2:交換しても大丈夫ですか?

4

1 に答える 1

9

最初の質問でfile:read_file/1は、 のタプルが返される{Status, Result}ため、割り当ては次のようになります。

{ok, File} = file:read_file("pbd4e53e0.html").

次に、File文字列ではなくバイナリになるため、最初に文字列に変換する必要があります。

Content = unicode:characters_to_list(File).

( encoding 引数も指定できます)

その後string:len(Content)、期待どおりに動作します。

置換部分に関しては、通常、 HTML で正規表現を使用することは非常に悪い考えですが、API の観点からは問題ないように見えます。

于 2013-03-30T10:08:56.317 に答える