Rumah  >  Artikel  >  Java  >  Bagaimana untuk Cekap Mengulangi Titik Kod Unicode dalam Rentetan Java?

Bagaimana untuk Cekap Mengulangi Titik Kod Unicode dalam Rentetan Java?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-02 06:49:02490semak imbas

How to Efficiently Iterate Over Unicode Codepoints in Java Strings?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn