Re: Binary String pattern matching
Java House <[email protected]>
| Newsgroups | gmane.comp.lang.erlang.general |
|---|---|
| Message-ID | <CAJYUOtemMzyD_ostTG+mJk82JPA6UV9JgiQstOeFjxqE_mRrYw@mail.gmail.com> |
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 < [email protected]> έγραψε: > 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 <[email protected]> > 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 <[email protected]> > έγραψε: > >> 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 >> > >