Troncature de chaîne Java String Byte Prend en charge les caractères déformés

En Java, String doit être tronqué du nombre d'octets s'il s'agit d'une liaison API avec un nombre limité d'octets. En japonais, Charaset fait 2 octets, 3 octets ... et si vous tronquez au milieu du caractère, cela semble étrange. J'y ai réfléchi un moment, alors j'ai écrit le code sous forme de mémorandum Je ne l'ai pas déplacé, mais peut-être que ça va ...

Sample.java


public static String truncateByte(String s, int length, Charset charset) {
    if (StringUtils.isEmpty(s) || length <= 0) {
    	return s == null ? null : "";
    }
    if (s.getBytes(charset).length <= length) {
    	return s;
    }
    String r = new String(s.getBytes(charset), 0, length, charset);
    while (r.length() >= 0 && !s.startsWith(r)) {
    	r = r.substring(0, r.length() - 1);
    }
    return r;
}
  1. Le premier motif vide est repoussé
  2. Respectez le nombre d'octets
  3. Obtenez les caractères tronqués par le nombre d'octets
  4. Tronquez les caractères tronqués caractère par caractère jusqu'à ce que le caractère d'origine commence par le caractère tronqué
  5. Renvoyer le caractère coupé

Recommended Posts

Troncature de chaîne Java String Byte Prend en charge les caractères déformés
Chaîne Java
Défi pour gérer les caractères déformés avec Java AudioSystem.getMixerInfo ()
[Java] Remplissage de la chaîne de caractères
Traitement des chaînes Java
Chaîne divisée (Java)
Caractères brouillés de tréma
[Java] Comparaison des chaînes de caractères et && et ||
Remplacement multiple de chaîne Java
[Note] Java: recherche de chaînes de caractères
[Note] Java: enquête sur les chaînes de caractères
À propos de la classe Java String
Convertir un tableau d'octets Java en une chaîne hexadécimale
Compression Zip qui ne brouille pas dans l'environnement Java