2011-12-15 69 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

相关问题