「ONE」也是一個列表(發生的整數對應於這種情況下的可打印字符值)。
你會不會感到驚訝,如果你看到了這一點:
1> lists:flatten([[],[],[1,2,3],[],[]]).
[1,2,3]
現在檢查了這一點:
2> lists:flatten([[],[],[79,78,69],[],[]]).
"ONE"
通常更容易(和多更有效)處理「字符串「數據作爲二進制文件:
3> lists:flatten([[],[],<<"ONE">>,[],[]]).
[<<"ONE">>]
」效率更高「部分來自您可能會在二進制數據上進行的其他操作(比如匹配,分割等)以及二進制文件的大量內存佔用。
編輯
我忘了提及的string:join/2
聯合動力在這種情況下string:tokens/2
:
4> string:tokens(string:join([[],[],"ONE",[],[]], " "), " ").
["ONE"]
5> string:tokens(string:join([[],[],"ONE",[],"Two"], " "), " ").
["ONE","Two"]
可是......而是一個極好的黑客攻擊,它從每一個遭受惡劣作爲黑客(它的醜陋,不清楚,沒有說明你的意思,不自覺地是空白的,並且大大低於處理二進制文件的效率)方面。
我明白,字符串是一個列表。我正在考慮將這些翻轉爲二進制字符串。我會給那一槍。謝謝! – RockyMountainHigh 2014-12-10 23:30:01
另一種方式來做到這一點,但留下一個字符串是'[列表:flatten(東西)]'嵌套在列表中的結果,但通常結束後,你不打算在後面的影響。通常,標記元組對於數據中的位置順序決定語義值是最好的,我想你正在某個地方工作(解析用戶輸入或其他東西?)。 – zxq9 2014-12-10 23:33:57
@RockyMountainHigh只記得'token/2'和'join/2'--所以我在答案中加入了這個組合的例子。 – zxq9 2014-12-10 23:40:04