2011-12-15 2 views
1

os : cmd에서 매우 긴 문자열이 반환되었습니다. 내 exe 파일 출력 코드 4 일부 기호가 포함되어 있으므로 다른 기호로 바꾸고 출력 시작 부분에 메타 넣기. 이제 나는 심볼을 대체하고 싶다. 가장 빠른 방법으로 어떻게 할 수 있습니까?문자열에 특정 바이트를 설정할 수 있습니까?

+0

일부 코드, 더하기 명령 출력은 높이 평가됩니다! –

답변

1

얼랭 문자열은 목록입니다. Erlang 목록은 변경할 수 없습니다. 따라서 문자열 내의 특정 바이트를 변경할 수 없으므로이 바이트를 대체 한 다른 문자열 만 생성 할 수 있습니다.

문자를 다시 (map을 사용하여) 바꾸거나 원래 문자열을 전달하십시오.

2

나는 Erlang의 멍청한 놈이다. 그래서이 대답은 가장 좋은 대답은 아닐 것이다. 아마도 Erlang Programming book에 아직 도달하지 않은 장에서이 작업을 수행하는 함수가있을 것입니다. 그러나 나는 이것이 당신이 원하는대로하는 것이라고 생각합니다 :

-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 글쎄, 데이터가 불변이므로 인라인을 변경할 수는 없다. 그래서 문자열을 새로운 문자열로 바꿔야합니다. –

관련 문제