When applying 3 u: 7 u: to a string which may contain U8 characters the
length of the result is the same as the number of characters displayed.

   3 u: 7 u: 'ӒAÁú'
1234 65 193 250
   #3 u: 7 u: 'ӒAÁú'
4
   #'ӒAÁú'
7
   a.i.'ӒAÁú'
211 146 65 195 129 195 186

Only 4 characters display even though the string consists of 7 bytes. I can
ignore the fact that U8 may be in the string. One number for one displayed
character. Seems to me that lengths of strings and where a displayed
character is in a string are easier to keep track of.

   U2N=:[:3&u:7&u:
   'AABC'=&U2N'ӒAÁú' NB. Easily shows that the second displayed character
in each string match.
0 1 0 0
   2{.U2N'ӒAÁú'
1234 65
   2&{.&.U2N'ӒAÁú'   NB. I get 2 displayed characters even though it is 3
bytes.
ӒA
   #2&{.&.U2N'ӒAÁú'
3
   |.&.U2N'ӒAÁú'     NB. Things work like they do in ASCII only strings.
úÁAӒ
   |.'ӒAÁú'
�Á�A��


2011/10/30 Björn Helgason <[email protected]>

> How would you decide which string is bigger?
>
>    3 u: 7 u: 'ӒAÁú'
> 1234 65 193 250
>    3 u: 7 u: 'abssdgasfgas'
> 97 98 115 115 100 103 97 115 102 103 97 115
>    +/3 u: 7 u: 'ӒAÁú'
> 1742
>    +/3 u: 7 u: 'abssdgasfgas'
> 1257
>
> 2011/10/30 Don Guinn <[email protected]>
>
> > By "string" I assume you mean "literal". = only gives equal or not equal
> > for literals. > and like give domain errors for literals. However, grade
> > (/:) does perform a sort on literals.
> >
> > ASCII literals work pretty well with grade; however, if any Unicode are
> in
> > the literal things get messy. When I need to sort literals that may
> include
> > Unicode I use the u: verb as below. This also converts the literal to
> > numeric so all comparisons work.
> >
> >   3 u: 7 u: 'ӒA'
> > 1234 65
> >
> > On Sun, Oct 30, 2011 at 2:58 PM, Andrew Pennebaker <
> > [email protected]> wrote:
> >
> > > I made a general cmp function for arbitrary data types. Let me know if
> J
> > > has a built-in function with the same API.
> > >
> > > https://github.com/mcandre/mcandre/blob/master/j/cmp.j
> > >
> > > Example usage:
> > >
> > >   1 cmp 2
> > > -1
> > >   2 cmp 1
> > > 1
> > >   1 cmp 1
> > > 0
> > >   'abc' cmp 'def'
> > > -1
> > >   'def' cmp 'abc'
> > > 1
> > >   'abc' cmp 'abc'
> > > 0
> > >   1 lt 2
> > > 1
> > >   2 lt 1
> > > 0
> > >   1 lte 2
> > > 1
> > >   1 lte 1
> > > 1
> > >   'abc' gte 'def'
> > > 0
> > >   'abc' gte 'abb'
> > > 1
> > >
> > > Cheers,
> > >
> > > Andrew Pennebaker
> > > www.yellosoft.us
> > >
> > > On Sun, Oct 30, 2011 at 4:29 PM, Andrew Pennebaker <
> > > [email protected]> wrote:
> > >
> > > > Is there a dyad that returns -1 for string x less than string y, 1
> for
> > x
> > > > greater than y, and 0 for x equals y?
> > > >
> > > > -: Almost does this, but it only tests equality; it's not specific
> > enough
> > > > to tell you whether x or y is greater. Instead it just returns 0 for
> > not
> > > > equal and 1 for equal.
> > > >
> > > > The compare dyad almost does this, but with an API with complexity on
> > the
> > > > order of diff or subversion.
> > > >
> > > >    'abc' compare 'def'
> > > > 0 [0] abc
> > > > 1 [0] def
> > > >
> > > >    'abc' compare 'abc'
> > > > no difference
> > > >
> > > > In a conditional you would have to use (('abc' compare 'abc') compare
> > 'no
> > > > difference') compare 'no difference' ad infinitum just to see if
> there
> > > > was 'no difference' in the original compare!
> > > >
> > > > Cheers,
> > > >
> > > > Andrew Pennebaker
> > > > www.yellosoft.us
> > > >
> > > ----------------------------------------------------------------------
> > > For information about J forums see http://www.jsoftware.com/forums.htm
> > >
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> >
>
>
>
> --
> Björn Helgason, Verkfræðingur
> Fornustekkum II
> 781 Hornafirði,
> t-póst: [email protected]
> gsm: +3546985532
> twitter: @flugfiskur
> http://groups.google.com/group/J-Programming
>
>
> Tæknikunnátta höndlar hið flókna, sköpunargáfa er meistari einfaldleikans
>
> góður kennari getur stigið á tær án þess að glansinn fari af skónum
>          /|_      .-----------------------------------.
>         ,'  .\  /  | Með léttri lund verður        |
>     ,--'    _,'   | Dagurinn í dag                     |
>    /       /       | Enn betri en gærdagurinn  |
>   (   -.  |        `-----------------------------------'
>   |     ) |         (\_ _/)
>  (`-.  '--.)       (='.'=)   ♖♘♗♕♔♙
>   `. )----'        (")_(") ☃☠
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to