Tronquer les Chaînes en Octets

J'ai créer ce qui suit pour tronquer une chaîne de caractères en java pour une nouvelle chaîne avec un nombre d'octets.

        String truncatedValue = "";
        String currentValue = string;
        int pivotIndex = (int) Math.round(((double) string.length())/2);
        while(!truncatedValue.equals(currentValue)){
            currentValue = string.substring(0,pivotIndex);
            byte[] bytes = null;
            bytes = currentValue.getBytes(encoding);
            if(bytes==null){
                return string;
            }
            int byteLength = bytes.length;
            int newIndex =  (int) Math.round(((double) pivotIndex)/2);
            if(byteLength > maxBytesLength){
                pivotIndex = newIndex;
            } else if(byteLength < maxBytesLength){
                pivotIndex = pivotIndex + 1;
            } else {
                truncatedValue = currentValue;
            }
        }
        return truncatedValue;

C'est la première chose qui vient à mon esprit, et je sais que je pourrais faire pour l'améliorer. J'ai vu un autre post qui a été de poser une question similaire il y a, mais ils ont été tronquer les Chaînes en utilisant les octets au lieu de String.sous-chaîne. Je crois que je préfère utiliser des chaînes de caractères.sous-chaîne dans mon cas.

EDIT: j'ai juste enlevé l'UTF8 référence parce que je préfère être en mesure de le faire pour les différents types de stockage aswell.

Je voudrais reformuler votre problème. Vous êtes à essayer de s'adapter à une chaîne en un tableau d'octets qui ne peut pas être plus grand que maxUTF8BytesLength. Vous souhaitez utiliser UTF-8 pour l'encodage. Vous souhaitez copier autant de caractères que possible. - Il Correct?
bon, je dirais que c'est correct. Je tiens également à le faire de manière efficace.
J'ai juste modifié la question pour ne pas référence UTF-8. Désolé à ce sujet, il est trompeur.

OriginalL'auteur stevebot | 2010-08-26