Spaltet einen String nach einem Byte

8

Ich habe ein String , das einige ASCII-Steuerzeichen enthält (nämlich RS (0x1e) und US (0x1f)). Ich habe sie in meinem Code als solche definiert:

%Vor%

später in meinem Code, ich möchte eine Zeichenfolge mit diesen Zeichen teilen:

%Vor%

aber das funktioniert nicht richtig. Nach einigem Herumfummeln habe ich das gefunden

%Vor%

funktioniert, aber in diesem Fall muss ich mich an die Codes erinnern. Ich benutze das RS statische Byte auch in anderen Teilen, also nur das Ändern ist keine echte Option. Ich könnte natürlich ein RS_STRING oder etwas erstellen, aber das bedeutet doppelte Arbeit.

Irgendeine saubere gute Lösung dafür?

    
Bart Friederichs 29.04.2015, 14:51
quelle

2 Antworten

5

Ich habe das Zeichen als char anstatt als byte deklariert und für mich korrigiert - das Folgende funktioniert gut:

%Vor%

Wenn jedoch ein Byte als Typ verwendet wird, schlägt es fehl:

%Vor%

Sie können natürlich char wieder auf byte anwenden, wenn Sie in anderen Teilen Ihres Codes darauf Bezug nehmen müssen.

    
berry120 29.04.2015, 15:00
quelle
2

Das Problem ist die Verwendung von String.valueOf() , weil kein String.valueOf (Byte) ist.

Stattdessen wird das Byte automatisch auf int und String.valueOf(int) wird erweitert. Und diese Methode gibt die dezimale Zeichenfolgendarstellung des int.

zurück

Das ist der Grund, warum der Vorschlag, RS als Char zu deklarieren, es behebt, String.valueOf (char) tut tatsächlich das, was Sie erwarten (gibt einen String mit diesem char darin an).

Sie könnten alternativ einfach eine explizite Umwandlung hinzufügen, wenn Sie in die String-Repräsentation transformieren: String.valueOf((char) RS) und die condentative RS als Byte deklarieren.

    
Durandal 29.04.2015 16:37
quelle

Tags und Links