在 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
④