我想根据给定的数字将一个字符串分成子字符串,例如:
divide("string",1) = ["s","t","r","i","n","g"].
我已经试过了,但是没有成功。
lists:split(1,"string") = {"s", "tring"}
有什么想法吗?
最佳答案
我会计算一次长度(因为这是一个缓慢的操作),然后递归地使用 lists:split/2
直到剩下的列表小于 N
:
divide(List, N) ->
divide(List, N, length(List)).
divide(List, N, Length) when Length > N ->
{A, B} = lists:split(N, List),
[A | divide(B, N, Length - N)];
divide(List, _, _) ->
[List].
1> c(a).
{ok,a}
2> a:divide("string", 1).
["s","t","r","i","n","g"]
3> a:divide("string", 2).
["st","ri","ng"]
4> a:divide("string", 3).
["str","ing"]
5> a:divide("string", 4).
["stri","ng"]
6> a:divide("string", 5).
["strin","g"]
7> a:divide("string", 6).
["string"]
8> a:divide("string", 7).
["string"]
关于erlang - 如何将一个字符串分成子串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40250350/