Усечение строк в байтах

Я создаю следующее для усечения строки в Java до новой строки с заданным количеством байтов.

        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;

Это первое, что пришло мне в голову, и я знаю, что могу улучшить это. Я видел другой пост, где задавался похожий вопрос, но они обрезали строки, используя байты вместо String.substring. Я думаю, что я предпочел бы использовать String.substring в моем случае.

РЕДАКТИРОВАТЬ: Я просто удалил ссылку на UTF8, потому что я бы предпочел сделать это для различных типов хранилищ, а также.

Ответы на вопрос(12)

Ваш ответ на вопрос