1

Jでは、次のことができます:

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

そして、当然のことながら 3 が出力されます。

ただし、ユニコードは機能しないようです:

'▁▂▃▄▅▆▇'
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 に答える