[erlang-questions] What is allowed in a pattern in terms of string concatenation?
Reynaldo Baquerizo
reynaldomic@REDACTED
Mon Jun 27 18:12:39 CEST 2011
On Mon, 27 Jun 2011 11:52:44 -0400
Daniel Dormont <dan@REDACTED> wrote:
> Suppose I want to test that a certain string String1 ends with a
> certain other string String2. The best I could come up with is:
>
> case string:substr(lists:reverse(String1), 1, length(String2)) of
> String2 -> ok;
> _ -> not_ok
> end
>
> I was thinking there must be a better way, but various attempts along
> the lines of case String1 of
> _ ++ String2 -> ok;
>
> all returned "illegal pattern" errors. I couldn't find a clear
> explanation online of when exactly ++ is allowed in a pattern and
> when it's not, so I'm a bit stumped. Is there a better way?
I can think of one using pattern matching,
is_substring(Substr, Substr) ->
true;
is_substring(String, Substr) ->
[_|T] = String,
p5(T, Substr).
you'd have to wrap it in a try ... catch for badmatch
--
Reynaldo
More information about the erlang-questions
mailing list