我可以在字符串中设置特定字节吗?

时间:2011-12-15 16:40:36

标签: erlang

我从os:cmd返回了很长的字符串。我的exe文件输出包含一些代码为4的符号,所以我用其他符号替换它们并将meta放在输出的开头。现在我想要替换符号。我怎么能以最快的方式做到这一点?

2 个答案:

答案 0 :(得分: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)].

它只是通过list(你的字符串)并用新的字符替换旧字符。它不处理I18N。可能有更快的方法来做到这一点。它会让你这样做:

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

或者这个:

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

就最快的方式而言 - 我猜这将是一个提供的功能。如果没有,你将不得不以不同的方式编码并运行数字。

答案 1 :(得分:1)

Erlang字符串是列表。 Erlang列表是不可变的。因此,您无法更改字符串中的特定字节,您只能生成另一个字符串,并替换这些字节。

再次替换字符(使用map),或传递原始字符串。