Length of string can be interpreted variously - Longueur de chaîne peut être interprété diversement --

  • number of chars in the string nombre de caractères dans la chaîne
  • number of characters in the string nombre de caractères dans la chaîne
  • number of bytes in the string nombre d'octets dans la chaîne

String.length() gives you the number of chars in the string accurately. String.length () vous donne le nombre de caractères dans la chaîne de précision.

However a char is not necessarily a complete character. Toutefois, un char n'est pas nécessairement un caractère complet. Why? Pourquoi?
Supplementary characters exist in the Unicode charset. Caractères supplémentaires existent dans le jeu de caractères Unicode. These are characters that have code points above the base set, and they have values greater than 0xFFFF. Ces sont des personnages qui ont points de code au-dessus de la base, et ils ont des valeurs supérieures à 0xFFFF. They extend all the way up to 0×10FFFF. Elles s'étendent sur toute la hauteur à 0 × 10FFFF.

In Java, these supplementary characters are represented as surrogate pairs, pairs of char units that fall in a specific range. En Java, ces caractères supplémentaires sont représentés comme des paires de substitution, des paires de char unités qui entrent dans une gamme spécifique. The leading or high surrogate value is in the 0xD800 through 0xDBFF range. Le chef de file ou de substitution de haute valeur est dans l'0xD800 par 0xDBFF gamme. The trailing or low surrogate value is in the 0xDC00 through 0xDFFF range. La moyenne mobile ou à faible valeur de substitution est en 0xDC00 par 0xDFFF gamme.

J2SE 5.0 API has a new String method: codePointCount(int beginIndex, int endIndex) which tells you how many Unicode code points are between the two indices. API J2SE 5,0 a une nouvelle méthode String: codePointCount (int beginIndex, int endIndex) qui vous indique le nombre de points de code Unicode sont entre les deux indices. The index values refer to code unit or char locations, so endIndex - beginIndex for the entire String is equivalent to the String’s length. Les valeurs de l'indice de référence ou code unité char endroits, afin endIndex - beginIndex pour l'ensemble à cordes est l'équivalent de la chaîne de dépendance.

So: Donc:
int characterLength = myString.codePointCount(0, charLength); int characterLength = myString.codePointCount (0, charLength);

As before: Comme par le passé:
int charLength = myString.length(); int charLength = myString.length ();

Unless you plan to sell your software to China or Japan (read internationalize) you are unlikely to encounter any difference between charLength and characterLength. À moins que vous envisagez de vendre votre logiciel en Chine ou au Japon (lire l'internationalisation), vous ne risquent pas de rencontrer toute différence entre charLength et characterLength.

So how many bytes are in a String? Donc, combien d'octets sont dans un string?
int byteCount = myString.getBytes().length; int byteCount = myString.getBytes (). longueur;

getBytes converts its Unicode characters into a legacy charset with the exception of UTF-8 which is a multibyte encoding of Unicode and not a legacy charset. getBytes convertit ses caractères Unicode dans un héritage de caractères à l'exception de l'UTF-8 qui est un multi-encodage d'Unicode et non un héritage de caractères. It then returns the characters in a byte array. Il retourne ensuite les personnages dans un tableau d'octets.

Hat tip: Hat tip: Joconner here ici