2011-12-15 100 views
1

我有很長的字符串從os:cmd返回。我的exe文件輸出包含一些代碼爲4的符號,所以我用其他符號替換它們,並將meta放在輸出的開頭。現在我想將符號替換回來。我如何以最快的方式做到這一點?我可以在字符串中設置特定字節嗎?

+0

一些代碼,加上命令輸出將不勝感激! – 2011-12-16 06:08:19

回答

1

Erlang字符串是列表。 Erlang列表是不可變的。所以你不能在一個字符串中改變特定的字節,你只能生成另一個字符串,並替換這些字節。

再次替換字符(使用map),或者傳遞原始字符串。

2

我是Erlang noob,所以這個答案很可能不是最好的答案。在Erlang編程書籍中尚未涉及的章節中可能有這樣的功能。不過,我想這你想要做什麼:

-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 2011-12-16 06:25:41

相關問題