Mit dem abschneiden von Strings von Bytes

Erstelle ich die folgenden für das abschneiden einer Zeichenfolge in java, um eine neue Zeichenfolge mit einer bestimmten Anzahl von bytes.

        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;

Dies ist die erste Sache, die mir in den Sinn kam, und ich weiß, dass ich verbessern könnte. Ich sah in einem anderen Beitrag wurde gefragt, eine ähnliche Frage gibt, aber Sie waren mit dem abschneiden von Strings mit bytes anstelle von String.substring. Ich glaube, ich würde eher die Verwendung von String.substring in meinem Fall.

EDIT: habe Sie gerade entfernt die UTF8-Referenz würde ich da eher in der Lage sein, dies zu tun für unterschiedliche storage-Typen aswell.

  • Ich würde das anders formulieren Ihr problem. Sie versuchen zu passen, einen string in ein byte-array, das nicht größer als maxUTF8BytesLength. Sie wollen für die Verwendung von UTF-8 für die Codierung. Sie kopieren wollen so viel Charakter wie möglich. Richtig?
  • richtig, ich würde sagen, dass ist richtig. Ich möchte auch, es zu tun effizient.
  • Ich habe gerade bearbeiteten die Frage nicht auf UTF-8. Tut uns Leid, es war irreführend.
InformationsquelleAutor stevebot | 2010-08-26
Schreibe einen Kommentar