Я - нуль Эрланг, так что этот ответ, скорее всего, не самый лучший ответ. Вероятно, есть функция, которая делает это в главе, которой я еще не достиг в книге по программированию на 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).
"01234-6789"
или это:
28> replace:replace("39582049867", 57, 45).
"3-58204-867"
С точки зрения самого быстрого пути - я собираюсь догадаться, что это будет предоставленная функция. Если нет, вам придется кодировать его различными способами и вводить числа.