Nice programing

정수를 Erlang의 문자열로 변환

nicepro 2020. 12. 27. 20:47
반응형

정수를 Erlang의 문자열로 변환


알아요, Erlang 문자열은 어떤 대가를 치르더라도 피해야합니다 ...

하지만 그렇게하지 않으면 5에서 "5"를 어떻게 생성합니까?

특히 스트림에 인쇄하는 대신 형식화 된 문자열을 반환하는 io : format ( "~ p", [5]) 같은 것이 있습니까?


다음은 아마도 가장 좋은 방법은 아니지만 작동합니다.

1> lists:flatten(io_lib:format("~p", [35365])).
"35365"

편집 : 다음 기능이 유용하다는 것을 발견했습니다.

%% string_format/2
%% Like io:format except it returns the evaluated string rather than write
%% it to standard output.
%% Parameters:
%%   1. format string similar to that used by io:format.
%%   2. list of values to supply to format string.
%% Returns:
%%   Formatted string.
string_format(Pattern, Values) ->
    lists:flatten(io_lib:format(Pattern, Values)).

편집 2 (댓글에 대한 응답으로) : 위의 기능은 Erlang을 배우기 위해 얼마 동안 작성한 작은 프로그램에서 나왔습니다. 나는 문자열 포맷 기능을 찾고의 행동을 발견 io_lib:format/2erl직관, 예를 들어 :

1> io_lib:format("2 + 2 = ~p", [2+2]).
[50,32,43,32,50,32,61,32,"4"]

당시 저는 @archaelus가 언급 한 출력 장치의 '자동 병합'동작을 인식하지 못했기 때문에 위 동작이 제가 원하는 것이 아니라는 결론을 내 렸습니다.

오늘 저녁, 나는이 프로그램으로 돌아가 string_format함수 호출을 io_lib:format. 이로 인해 발생한 유일한 문제는 평면화 된 문자열을 예상했기 때문에 실패한 몇 가지 EUnit 테스트였습니다. 이들은 쉽게 고쳐졌습니다.

이 기능을 사용하면 정수를 문자열로 변환하는 것이 과도하다는 @gleber 및 @womble에 동의합니다. 그게 전부라면 integer_to_list/1. 키스!


또한 integer_to_list/1추악함없이 원하는 것을 정확히 수행하는.


문자열은 목록입니다.

9> integer_to_list(123).  
"123"

여담 혹시 수레의 문자열 표현을 처리해야하는 경우로서 당신은 봐야 작업 밥 폴리 토가에서 수행했다고 mochinum .


목록 : concat ([숫자]). 또한 작동합니다.

참조 URL : https://stackoverflow.com/questions/588003/convert-an-integer-to-a-string-in-erlang

반응형