En Unicode (UTF-16), un caractère est généralement représenté par deux octets. Cependant, au fur et à mesure que le nombre de caractères à gérer par Unicode augmentait, le nombre de caractères pouvant être représentés par 2 octets (65535 caractères) devenait insuffisant et en exprimant certains caractères avec 4 octets, le nombre de caractères pouvant être traités augmentait. .. Ces caractères de 4 octets sont appelés paires de substitution.
Le caractère «réprimande» est une paire de substitution, donc si vous utilisez normalement la méthode «length», il sera considéré comme deux caractères.
Par conséquent, pour compter correctement les chaînes contenant des paires de substitution, utilisez la méthode codePointCount
au lieu de la méthode length
.
var str1 = "Bonjour";
System.out.println(str1.length()); //Résultat: 5
var str2 = "Gronder";
System.out.println(str2.length()); //Résultat: 3
//Cela obtiendra le nombre correct de caractères
System.out.println(str2.codePointCount(0, str2.length())); //Résultat: 2
codePointCount
/**
@param begin Position de départ pour trouver la longueur
@param end Position finale pour la longueur
@nombre de caractères de retour
*/
public int codePointCount(int begin, int end)