我正在尝试根据另一个给定字符串的长度生成一个字符串。 我的代码是:
generate(S1,S2)->
LenString1 = length(S1),
LenString2 = length(S2),
L = LenString1 div LenString2,
lists:flatten(lists:duplicate(L,S2)).
但是这种情况不起作用:
generate("Some", "Key")
或
generate("Generate","Key")
我需要的结果是:
KeyK
或
KeyKeyKe
谢谢
答案 0 :(得分:3)
您还需要获取前flatten
个字符并将其附加到generate(S1, S2)->
LenString1 = length(S1),
LenString2 = length(S2),
L = LenString1 div LenString2,
Extra = LenString1 rem LenString2,
lists:flatten(lists:duplicate(L, S2)) ++ lists:sublist(S2, Extra).
的结果:
1> a:generate("Some", "Key").
"KeyK"
2> a:generate("Generate", "Key").
"KeyKeyKe"
CREATE UNIQUE INDEX unq_persons_pid_lastname ON PERSONS(P_Id, LastName);
答案 1 :(得分:3)
为什么这么复杂?
generate(S1, S2) ->
generate(S2, S1, S2).
generate(S2, [_|_] = S1, []) ->
generate(S2, S1, S2);
generate(S2, [_|S1], [H|T]) ->
[H | generate(S2, S1, T)];
generate(S2, [], _) when is_list(S2) -> [];
generate(_, _, _) -> error(badarg).