J unicode索引访问器

时间:2012-01-19 03:52:54

标签: unicode j

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

r=:'0123456'
m=:3 } r
echo m

并打印3,应该如此。

然而,unicode似乎不起作用:

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

什么都不打印。我的猜测是,这是由于按字节索引 - 通过char位置索引的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

您是正确的,给出的列表的索引是按字节。那是因为它的数据类型是文字的。如果您希望将其解释为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
④