2011-12-15 12 views
1

私は非常に長い文字列をos:cmdから返しました。私のexeファイルの出力にはコード4のシンボルがいくつか含まれているので、それらを他のシンボルに置き換え、出力の先頭にメタを入れます。今私はシンボルを元に戻したい。私はどのようにして最速の方法でそれを行うことができますか?文字列に特定のバイトを設定できますか?

+0

いくつかのコード、さらにはコマンド出力も高く評価されます! –

答えて

1

Erlang文字列はリストです。 Erlangリストは不変です。したがって、文字列内の特定のバイトを変更することはできません。これらのバイトを置き換えて別の文字列を生成することしかできません。

文字をもう一度置き換えるか(mapを使用)、元の文字列を渡します。

2

私はErlangのnoobですので、この回答はおそらく最良の答えではありません。おそらくErlang Programmingの書籍にはまだ書かれていない章でこれを行う関数があります。しかし、私はこれが何をしたいんだと思う:それはちょうどリスト(あなたの文字列)を経由し、新しいものと古い文字に置き換えられ

-module(replace). 
-export([replace/3]). 

replace([], _, _) -> []; 
replace([OldChar | T], OldChar, NewChar) -> [NewChar | replace(T, OldChar, NewChar)]; 
replace([H | T], OldChar, NewChar) -> [H | replace(T, OldChar, NewChar)]. 

。それはI18Nを処理しません。おそらくこれを行うより速い方法があります。それはあなたがこれを行うようになる。

24> replace:replace([48,49,50,51,52,53,54,55,56,57], 53, 45). 
"-6789" 

またはこれを:

28> replace:replace("39582049867", 57, 45). 
"3-58204-867" 

一番手っ取り早い方法の面では - 私はそれが提供する機能になります推測するつもりです。そうでない場合は、コードを別の方法でコーディングして番号を実行する必要があります。

+0

実際には文字を置き換えるのではなく、文字を置き換えて新しい文字列を返します。 – rvirding

+1

@rvirdingデータは不変なのでインラインでは変更できません。そのため、文字列を新しい文字列で置き換える必要があります。 –

関連する問題