Bu yüzden biliyorum String#codePointAt(int)
, ama char
kod noktası ofsetiyle değil, ofsetle indeksleniyor .
Şöyle bir şey denemeyi düşünüyorum:
- bir dizinde
String#charAt(int)
almak için kullanarakchar
- olup olmadığını test
char
olan aralığı yükseği-suretler- eğer öyleyse,
String#codePointAt(int)
kod noktasını almak için kullanın ve dizini 2 artırın - değilse
char
, kod noktası olarak verilen değeri kullanın ve dizini 1 artırın
- eğer öyleyse,
Ama endişelerim
- Doğal olarak yüksek vekiller aralığında bulunan kod noktalarının iki
char
değer olarak mı yoksa bir değer olarak mı depolanacağından emin değilim - bu, karakterler arasında yinelemenin çok pahalı bir yolu gibi görünüyor
- birisi daha iyi bir şey bulmuş olmalı.