字符串我知道,二郎字符串應該不惜一切代價避免...轉換的整數二郎
,但如果我不這樣做,我怎麼產生「5」 5?
特別是,有沒有像io:format(「〜p」,[5])會返回一個格式化的字符串,而不是打印到流?
字符串我知道,二郎字符串應該不惜一切代價避免...轉換的整數二郎
,但如果我不這樣做,我怎麼產生「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)).
EDIT 2(在迴應評論時):上述功能來自於我編寫一段時間學習Erlang的小程序。我一直在尋找一個字符串格式化功能,發現io_lib:format/2
行爲中erl
反直覺的,例如:
1> io_lib:format("2 + 2 = ~p", [2+2]).
[50,32,43,32,50,32,61,32,"4"]
當時,我不知道所提到的「自動展平」輸出設備的行爲由@archaelus,所以斷定上述行爲不是我想要的。
今天晚上,我又回到了這個程序,並用io_lib:format
替換了string_format
函數的調用。這導致的唯一問題是少數EUnit測試失敗,因爲他們期望扁平化的字符串。這些很容易修復。
我同意@gleber和@womble使用這個函數將整數轉換爲字符串過大。如果這就是你所需要的,請使用integer_to_list/1
。吻!
還有integer_to_list/1
,這正是你想要的,沒有醜陋。
的字符串是一個列表:
9> integer_to_list(123).
"123"
列表:CONCAT([號碼])。也適用。
不惜一切代價避免?你從哪裏得到這個想法?有一些性能問題和其他煩惱,但它們仍然是核心數據類型和字符串的默認選擇。 – cthulahoops 2009-02-26 00:48:18
我用舌頭說話。如果我堅信你永遠不應該使用它們,我就不會問這個問題。另一方面,在我看來,將它們描述爲「核心數據類型」可能會把事情拉長一點。 – collapsinghrung 2009-02-26 03:28:16
erlang中的字符串是一個列表。它是核心數據類型。與二元或原子相同。 – Worker 2012-12-18 16:16:55