在J中,我可以执行以下操作:
r=:'0123456'
m=:3 } r
echo m
并打印3,应该如此。
然而,unicode似乎不起作用:
'▁▂▃▄▅▆▇'
m=: 3 } r
echo m
什么都不打印。我的猜测是,这是由于按字节索引 - 通过char位置索引的正确方法是什么?
答案 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
④