Binary String pattern matching

Java House java4dev@REDACTED
Wed Dec 9 22:00:03 CET 2020


Hi

yes the binary string is of the format <<"xxx">>

<<"3123CHF">>
> <<"341424343EUR">>
> <<"14143US">>
>
 Thank you for the answer.
So is there any other way?
erlang provides the binary_to_list, is there any way to achieve the same
with a list becasue I tried similare patterns with list and it does not
work e.g
[V|T] this will always match the first character of the string to V
and [V|"CHF"] does not work neither.

Best
Nikolas

Στις Τετ, 9 Δεκ 2020 στις 7:58 μ.μ., ο/η kuna.prime <
kuna.prime@REDACTED> έγραψε:

> HI,
>
> first of all binary string is of form <<"3123CHF">> and not <<3123CHF>>
> i'm just stating it in case there was a mistake in the first mail
>
> to answer your questio in order to pattern match you need to know the size
> of field you are matching so
>
> <<X:4/binary, "CHF">> = <<"3123CHF">>.
>
> will match fist 4 bytes and interpret that as new binary (X).
>
>
> Sent with ProtonMail <https://protonmail.com> Secure Email.
>
> ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
> On Wednesday, December 9, 2020 7:28 PM, Java House <java4dev@REDACTED>
> wrote:
>
> there is a typo in the example
> currrency_to_credits({cur, << Value , "CHF">>}, Acc)
>   when Value >= <<"1000">>, Value =< <<"10000">> ->
>      {chf, Acc + Value };
> currrency_to_credits({cur, << Value , "EUR">>}, Acc)
>   when Value >= <<"1000">>, Value =< <<"10000">> ->
>      {eur, Acc + Value };
> currrency_to_credits({cur, << Value , "US">>}, Acc)
>   when Value >= <<"1000">>, Value =< <<"10000">> ->
>      {us, Acc + Value };
>
> Στις Τετ, 9 Δεκ 2020 στις 7:17 μ.μ., ο/η Java House <java4dev@REDACTED>
> έγραψε:
>
>> Hello all
>>
>> I am learning Erlang and have stuck to the following problem.
>> How to write a function with pattern matching when the parameter is a
>> binary string.
>>
>> I have a list of binary strings e.g.
>> <<3123CHF>>
>> <<341424343EUR>>
>> <<14143US>>
>>
>> I am trying to create a function that matches according to a pattern.
>>
>> currrency_to_credits({cur, <<A, "CHF">>}, Acc)
>>   when Value >= <<"1000">>, Value =< <<"10000">> ->
>>      {chf, Acc + A};
>> currrency_to_credits({cur, <<A, "EUR">>}, Acc)
>>   when Value >= <<"1000">>, Value =< <<"10000">> ->
>>      {eur, Acc + A};
>> currrency_to_credits({cur, <<A, "US">>}, Acc)
>>   when Value >= <<"1000">>, Value =< <<"10000">> ->
>>      {us, Acc + A};
>>
>> But this does not seem to be the right way.
>> How can I create a pattern for binary string?
>> will it work better for list string? How?
>>
>> Thank you
>> Nikolas
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20201209/02917b63/attachment.htm>


More information about the erlang-questions mailing list