2017-07-09 9 views
1

utf8.offset(s, n, i)を使用して、特定のバイト位置と文字位置から開始するnの文字のオフセットを見つけるにはどうすればよいですか?utf8.offset:開始位置を指定する方法は?

がSのn番目の文字(iの位置から数えて)のエンコードが開始さ(バイト単位)の位置を返します。私はiだ...

を:としてiパラメータが文書化されています私が必要とするものですが、バイト位置か文字位置かどうかはわかりません。どうすれば使えますか?

+2

「i」はバイト位置(1から開始)です。同じ 's'の' utf8.offset(s、n、i) 'の次の呼び出しで' utf8.offset'によって返された結果を 'i'の値として使うことができます。 –

+0

@EgorSkriptunoffありがとう!だからLuaはこの関数で文字列をキャッシュしていますか? – Hydro

+1

いいえ、Luaは文字列をキャッシュしません。引数 'i'で指定したバイト位置から文字列を解析し始めます。そのため、不要な解析を避けるために、これを段階的に使用することができます。 –

答えて

2

Luaマニュアルに記載されているすべての文字列オフセットは、マニュアルで別途指示されていない限りバイト単位です。したがって、utf8.offsetの戻り値と同様に、iはバイトオフセットです。

+0

さらに、「i」が開始位置になりますか? '1 == i'のようなもの。 – Hydro

+1

@PolarDigit:ドキュメントに「i」と書かれていることがわかります。 –

関連する問題