Jadi saya tahu String#codePointAt(int)
, tapi itu diindeks oleh char
offset, bukan oleh titik kode offset.
Saya sedang berpikir untuk mencoba sesuatu seperti:
- gunakan
String#charAt(int)
untuk mendapatkanchar
di indeks - menguji apakah
char
berada 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
char
sebagai 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
char
nilai atau satu - ini sepertinya cara yang sangat mahal untuk mengulang melalui karakter
- seseorang pasti telah menemukan sesuatu yang lebih baik.