unicode索引存取器

unicode索引存取器,unicode,j,Unicode,J,在J中,我可以执行以下操作: r=:'0123456' m=:3 } r echo m 它应该打印3张 但是,unicode似乎不起作用: '▁▂▃▄▅▆▇' m=: 3 } r echo m 不打印任何内容。我的猜测是,这是由于}按字节索引-按字符位置索引的正确方法是什么?正确的是,给定列表的索引是按字节的。这是因为它的数据类型是文本。如果希望将其解释为unicode,则需要将列表转换为unicode: datatype '①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳' NB

在J中,我可以执行以下操作:

r=:'0123456'
m=:3 } r
echo m
它应该打印3张

但是,unicode似乎不起作用:

'▁▂▃▄▅▆▇'
m=: 3 } r
echo m

不打印任何内容。我的猜测是,这是由于}按字节索引-按字符位置索引的正确方法是什么?

正确的是,给定列表的索引是按字节的。这是因为它的数据类型是文本。如果希望将其解释为unicode,则需要将列表转换为unicode:

   datatype '①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳'       NB. check datatype of list
literal
   # '①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳'              NB. count items in list
60
   ucp '①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳'            NB. convert to unicode point chars
①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳
   datatype ucp '①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳'   NB. check datatype
unicode
   # ucp '①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳'          NB. count items in unicode list
20
   3} ucp '①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳'         NB. index into the list
④

实际上,您的第二个
echo m
不应该什么都不打印,它应该打印一个可能无法打印的字符。Try
#m
,应为1。