Lelaran melalui Titik Kod Unikod dalam Rentetan Java
Walaupun kelas String menyediakan kaedah codePointAt(int) untuk mengakses titik kod Unikod, pengindeksannya bergantung pada offset aksara dan bukannya offset titik kod. Ini menimbulkan kebimbangan tentang pengendalian aksara dalam julat pengganti tinggi dan kecekapan pendekatan lelaran yang dicadangkan menggunakan pengimbasan aksara demi aksara.
Penyelesaian Lelaran yang Diperbaiki
Java's Perwakilan String dalaman menggunakan skim pengekodan berasaskan UTF-16. Aksara di luar Pesawat Berbilang Bahasa Asas (BMP) dikodkan menggunakan skim penggantian. Untuk lelaran yang cekap, pertimbangkan untuk menggunakan pendekatan kanonik berikut:
<code class="java">final int length = s.length(); for (int offset = 0; offset < length; ) { final int codepoint = s.codePointAt(offset); // process the codepoint offset += Character.charCount(codepoint); }</code>
Pendekatan ini mengendalikan pasangan pengganti untuk aksara di luar BMP dengan betul. Dengan menggunakan Character.charCount(codepoint), ia secara cekap meningkatkan offset dengan bilangan aksara yang sesuai untuk setiap codepoint.
Atas ialah kandungan terperinci Bagaimana untuk Cekap Mengulangi Titik Kod Unicode dalam Rentetan Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!