Jadi saya tahu String#codePointAt(int), tapi itu diindeks oleh charoffset, bukan oleh titik kode offset.
Saya sedang berpikir untuk mencoba sesuatu seperti:
- gunakan
String#charAt(int)untuk mendapatkanchardi indeks - menguji apakah
charberada dalam kisaran pengganti tinggi- jika demikian, gunakan
String#codePointAt(int)untuk mendapatkan titik kode, dan naikkan indeks sebesar 2 - jika tidak, gunakan nilai yang diberikan
charsebagai titik kode, dan tingkatkan indeks sebesar 1
- jika demikian, gunakan
Tapi kekhawatiran saya
- Saya tidak yakin apakah titik kode yang secara alami berada dalam kisaran pengganti tinggi akan disimpan sebagai dua
charnilai atau satu - ini sepertinya cara yang sangat mahal untuk mengulang melalui karakter
- seseorang pasti telah menemukan sesuatu yang lebih baik.