我知道
我正在考虑尝试以下内容:
- 使用
但我的担忧是:
- 我不确定自然位于高代理范围内的codepoints是否会存储为两个
String#codePointAt(int)
,但它是由char
偏移量索引的,而不是由codepoint偏移量索引的。我正在考虑尝试以下内容:
- 使用
String#charAt(int)
获取索引处的char
- 测试char
是否在high-surrogates range
- 如果是,则使用String#codePointAt(int)
获取codepoint,并将索引增加2
- 如果不是,则使用给定的char
值作为codepoint,并将索引增加1但我的担忧是:
- 我不确定自然位于高代理范围内的codepoints是否会存储为两个
char
值还是一个值。
- 这似乎是一种非常昂贵的迭代字符的方式。
- 肯定有人想出了更好的方法。
offset = s.offsetByCodePoints(offset, 1);
。但是使用offset += Character.charCount(codepoint);
有什么好处吗? - Paul GrokeoffsetByCodePoints
(它重定向到Character.offsetByCodePoints
),大约有 50 行循环等内容;而charCount
只有一行代码和一个条件判断语句。因此,我认为这会导致性能损失较大。 - SipkacharAt()
,这是一个不好的主意。 - RecursiveExceptionException