Because Str is treated as a set of graphemes, and "\r\n" is treated as a single 
character, .substr() is doing the right thing here.

If you really want to treat it as a series of codepoints, you may want to go 
through Blob/Buf to get there:

    > "1234\r\n78".encode.subbuf(*-4)
    utf8:0x<0D 0A 37 38>
    > "1234\r\n78".encode.subbuf(*-4).decode
    
    78

Pm


On Mon, Feb 10, 2020 at 02:38:19PM -0500, Paul Procacci wrote:
> Unicode conformance requires "\r\n" to be interpreted as \n alone.
> With that said; no, I don't not know how to turn this off.
> 
> I personally think I'd consider this a bug.  If not a bug, greater
> documentation efforts that explain this.
> The display routines (say / print) don't modify the string on output, yet
> the other string handling routines do.
> 
> We'd need further clarification from the devs as I don't have a full grasp
> of the design decision for this problem.
> 
> On Mon, Feb 10, 2020 at 11:28 AM David Santiago <deman...@gmail.com> wrote:
> 
> > A 10 de fevereiro de 2020 16:57:55 CET, David Santiago <deman...@gmail.com>
> > escreveu:
> > >
> > >
> > >Hi!
> > >
> > >Is there a way to change the the following behaviour, so it considers
> > \r\n as two characters when using substr, instead of one?
> > >
> > >On raku version 2019.11
> > >
> > >> "1234\r\n". substr(*-4)
> > >4
> > >78
> > >> "1234\r\n". substr(*-4).ords()
> > >(52 13 10 55 56)
> > >
> > >
> > >Best regards,
> > >David Santiago
> > >
> >
> > Copied wrong the example:
> >
> > It should be:
> >
> > On raku version 2019.11
> >
> > > "1234\r\n78". substr(*-4)
> > 4
> > 78
> > > "1234\r\n78". substr(*-4).ords()
> > (52 13 10 55 56)
> >
> >
> >
> > --
> > Sent from my Android device with K-9 Mail. Please excuse my brevity.
> >
> 
> 
> -- 
> __________________
> 
> :(){ :|:& };:

Reply via email to