[erlang-questions] splitting
Chandru
chandrashekhar.mullaparthi@REDACTED
Mon Mar 3 10:51:05 CET 2008
On 03/03/2008, Balathasan Sayanthan <bsayanthan@REDACTED> wrote:
> Hi ,
>
> I am trying to write a decoding logic to decode a list which has a
> predefined separator ( eg. tab). But the distance at which the separator
> will occur from the start of the list is unknown. I want to extract all the
> values before the separator into one list and the rest of the list into
> another, what would be the best way of doing this in Erlang?
>
> for example if the program is given a list like [ 23, 34, 9, 34, 78, 90, 9,
> 10, 34 ]
>
> I want this to be split into [23, 34] , [ 34, 78, 90, 9, 10, 34] using 9 as
> the separator(the point at which will occur is a variable and aslo there
> might be multiple occurances of it).
>
> Am I supposed to use the string:tokens(string, substring), but is there a
> more efficient way of doing it in Erlang?
>
You can quite easily write a function to do this.
split_at(List, Split_char) ->
split_at(List, Split_char, []).
split_at([Split_char | T], Split_char, Acc) ->
{lists:reverse(Acc), T};
split_at([H | T], Split_char, Acc) ->
split_at(T, Split_char, [H | Acc]);
split_at([], _, Acc) ->
{lists:reverse(Acc), []}.
Alternatively, have a look at lists:splitwith/2
cheers
Chandru
More information about the erlang-questions
mailing list