1

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

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

它应该打印 3。

但是,unicode 似乎不起作用:

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

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

4

1 回答 1

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
④
于 2012-01-20T05:21:34.623 回答