我正在使用 UTF-8 字符串。我需要使用基于字节的索引而不是基于字符的索引来获取切片。
我在网上找到了对 的引用String#subseq
,它应该类似于String#[]
,但用于字节。唉,它似乎没有达到 1.9.1。
现在,我为什么要这样做?如果我在一个多字节字符的中间切片,我最终可能会得到一个无效的字符串。这听起来是个可怕的主意。
好吧,我正在使用StringScanner
,事实证明它的内部指针是基于字节的。我在这里接受其他选择。
这是我现在正在使用的内容,但它相当冗长:
s.dup.force_encoding("ASCII-8BIT")[ix...pos].force_encoding("UTF-8")
两者ix
和pos
来自StringScanner
,因此都是基于字节的。