Methoden Methode aus Java 1.6 auf Java 1.4 bereit stellen

Generic1

Top Contributor
Hi,

ich muss für ein altes Projekt (leider) noch etwas machen. Dabei funktioniert das mal nicht:

Java:
private String normalisedVersion(String version, String sep, int maxWidth) {
        String[] split = Pattern.compile(sep, Pattern.LITERAL).split(version);
        StringBuilder sb = new StringBuilder();
        for (String s : split) {
            sb.append(String.format("%" + maxWidth + 's', s));
        }
        return sb.toString();
        }


Vielleicht gibt es unter euch noch Java 1.4 entwickler die vielleicht wissen wie man diese Methode unter Java1.4 macht?

Pattern.LITERAL
StringBuilder und
String.format

gibts nämlich nicht unter Java 1.4.
Besten Dank,
 
Anstatt [c]StringBuilder[/c] kannst du schonmal [c]StringBuffer[/c] verwenden, hat die gleichen Methoden (nur synchronisiert und deshalb langsamer).
 
Besten Dank,
das wäre aber mal mein geringstes Problem gewesen. Ich weiß nämlich nicht wie ich das String.format und Pattern.LITERAL wegbekomme.

lg
 
Pattern.LITERAL wird man wohl nicht ersetzen können, außer durch komplette Kopie der Pattern-Klasse, falls dort alles in Java-Code drin sein sollte,

mach dich dazu schlau was das Flag genau leistet, schaue dir evtl. dein Programm in 1.6 an, mit Test-Daten, falls vorhanden,
und parse den String auf andere weise, entferne in einem Vorlauf Zeichen oder so

das Formatieren sollte wiederum machbar sein, DecimalFormat vielleicht,
du wirst hoffentlich selber wissen/ testen, was der bisherige Code macht
 
Statt String#format könnte man die Klasse java.text.MessageFormat benutzen. Dort sind allerdings die Formatierungscodes anders.
 
Pattern.LITERAL wird man wohl nicht ersetzen können, außer durch komplette Kopie der Pattern-Klasse, falls dort alles in Java-Code drin sein sollte,

mach dich dazu schlau was das Flag genau leistet, schaue dir evtl. dein Programm in 1.6 an, mit Test-Daten, falls vorhanden,
und parse den String auf andere weise, entferne in einem Vorlauf Zeichen oder so

das Formatieren sollte wiederum machbar sein, DecimalFormat vielleicht,
du wirst hoffentlich selber wissen/ testen, was der bisherige Code macht

naja, ich habe 2 Versionen:

Java:
String s1 = "13.2.3.4";
String s2 = "3.43.5.2";

und ich möchte feststellen, welche die Größere ist.
Mit der oberen Methode wird einfach z.B. aus:

13.2.3.4 -> 13 2 3 4

gemacht, für was auch immer, das versteh ich nicht ganz, der Vergleich geht ja auch ohne!?
 
Also ich hab das jetzt ausprobiert:

Code:
s1 = "9.1.1.2";                     // s2 > s1
        s2 = "10.1.1.1";
        cmp = s1.compareTo(s2);
        System.out.println("cmp3: " + cmp);

Das passt aber schon: cmp ist positiv -> also s2 > s1!?
 
was die Zahl 1, 0, -1 je nach Kontext bedeuten mag, kann relativ egal sein,
wichtig ist dass es konsistent ist!

vergleiche "7..." mit "8...", "8..." mit "9...", "9..." mit "10...", "10..." mit "11..." usw.
damm erhälst du -1, -1, -1, 1, -1, -1 oder meinetwegen 1, 1, 1, -1, 1, 1
also in der Mitte eine Abweichung, demnach keine sinnvolle Reihenfolge

kannst auch alle Strings in eine Liste setzen und sortieren lassen


-------

sowas mit mehreren Werten zu vergleichen ist viel wichtiger, als einen Einzelwert anzuschauen
und vielleicht über die Definition zu grübeln, merken 😉
 
Mal davon abgesehen das du hier einen gewaltigen Denkfehler gepostet hast.

Denn es heißt eben NICHT : "9..." mit "10..." sondern eben NUR : "9..." mit "1..."

Und genau DARUM liefert String.compareTo(String) auch als ergebnis das "9" größer sei als "10" weil eben nur die "1" betrachtet wird und nicht "10".
 
ist das nicht in Ergebnissen '1, 1, 1, -1, 1, 1' mit der einen Anomalie von mir auch bestätigt?
wo genau stimme ich nicht mit dir überein?
 

Zurück
Oben