String löschen und neu sortieren

Code:
StringBuffer b = new StringBuffer(stringtoEdit);
    		while(true){
    			int index1 = s.indexOf('"',index1);
    			int index2 = s.indexOf("|", index1);
    			if((index2 ==-1)||(index1==-1)) break;
    			String sub = s.substring(index1+1, index2);
    			try{
    				int i = Integer.parseInt(sub);
    				b.replace(index1, index2+1, "["+sub+"]");
    			}
    			catch(NumberFormatException e){
    			}
    			index1 = index2;
    		}

    		System.out.println(b);

@MeinerEiner

Irgendwie funktioniert die Methode bei mir nicht. Kann es sein, dass bei "b.replace(index1, index2+1, "["+sub+"]");" ein Fehler ist?

MfG

Sandy
 
Sorry, habe noch eine Frage. Wie kann ich den kompletten Text innerhalb der ""löschen, wobei dieser auch veränderlich sein kann?

2.132213,21.213240,"2134|Irgendetwas|Irgendetwas Irgendetwas $0x999999$"

Vielen Dank schon mal im voraus für Eure Vorschläge.

MfG,

Sandy
 
Moin!
@MeinerEiner

Irgendwie funktioniert die Methode bei mir nicht. Kann es sein, dass bei "b.replace(index1, index2+1, "["+sub+"]");" ein Fehler ist?

MfG

Sandy
Nicht das ich wüsste.., nochmal gepostet mit deinem beispiel:
Code:
String s = "2.132213,21.213240,"+'"'+"2134|Irgendetwas|Irgendetwas Irgendetwas $0x999999$"+'"';
            StringBuffer b = new StringBuffer(s);
            int index1 =0;
            while(index1 <= s.lastIndexOf('"')){
                index1 = s.indexOf('"',index1);
                int index2 = s.indexOf("|", index1);
                if(index2 ==-1) break;
                String sub = s.substring(index1+1, index2);
                try{
                    Integer.parseInt(sub);
                    b.replace(index1, index2+1, "["+sub+"]");
                }
                catch(NumberFormatException e){
                }
                index1 = index2;
            }
            System.out.println(b);
erzeugt die gewünschte Ausgabe:
2.132213,21.213240,[2134]Irgendetwas|Irgendetwas Irgendetwas $0x999999$"
Falls es immer noch net klappt, einfach nochmal melden.. Gewöhne dir aber bitte mal an, auch zu sagen WAS den nicht funktioniert. Wenn ein Fehler geworfen wird, poste den. Oder falls ein String nicht gewünscht verarbeitet wird, solltest du diesen das nächste mal posten. Weil ohne irgendwelche Angaben kann ich kaum Fehlersuche machen.




Sorry, habe noch eine Frage. Wie kann ich den kompletten Text innerhalb der ""löschen, wobei dieser auch veränderlich sein kann?

Nun ich hab dir mit dem obigen Beispiel ja eigentlich schon genung Anhaltspunkte gegeben, wie sowas funktioniert. Einfach den Index des StartZeichens und den Index des Endzeichens ermitteln und dann den Text mittendrin ersetzen.
Möglich wäre es auch mit der replaceAll() Methode und dem entsprechenden regulären Ausrucks. Da viele deiner Fragen auch darauf abgezielt haben, solltest du dich da vielleicht auch mal ein bisserl einlesen:
http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html
http://www.galileocomputing.de/open...04_006.htm#mj1e8cbf9564627d070e4d2d4ff1a27c8f

Also probiere es doch mal selbst, und wenn Probleme auftreten, helf ich dir gerne weiter..

*grüssle*
MeinerEiner
 
@MeinerEiner

Vielen Dank für Deine Mühen.

Hallo!

Hab nochmal was probiert, aber jetzt löscht es mir den ganzen Text.

Code:
if(s.indexOf('"')> -1)temp = s.replaceAll(" ['][\\0-9*p{Punct}?a-wA-W*p{Punct}?a-wA-W*][']", "");

anstatt nur

Code:
2.132213,21.213240,"2134|Irgendetwas|Irgendetwas Irgendetwas"

in

Code:
2.132213,21.213240,

umzuwandeln.

MfG

Sandy
 
Moin!
Zunächst einmal:
Code:
s.replaceAll(" ['][\\0-9*p{Punct}?a-wA-W*p{Punct}?a-wA-W*][']", "");
lässt sich so garnet kompilieren. Entferne die 2 Backslashes
Zweitens:
Wieso suchst du Text, der von ' eingeschlossen wird? Du suchst doch nach ", oder?
Drittens:
naja, sind eh noch ne Menge Fehler da drin, aber was machst du zum Beispiel, wenn dein String mit einer Zahl endet? Das würde dadurch nicht abgedeckt werden.
Weiterhin, wenn du mit p{Punct} ein Punktzeichen abfangen willst, solltest du auch mit einem Backslash schreiben : \p{Punct}. Bzw, da es sonst Kompilierungsprobleme gibt, als \\p{Punct}.

Es geht allerdings auch viel einfacher. Der Regex
Code:
[\\w|\\W]*
würde da besser passen. Er sucht nach beliebig langen Zeichenketten, bestehend aus Wort, oder nicht- Word Charaktern.

*grüssle*
MeinerEiner
 
Vielen Dank, dass hat mir schon sehr geholfen.

Hab noch eine kleine Frage: Wie kann ich mit regulären Ausdrücken nach etwas suchen, was mit " beginnt?

[' " '] und ["] klappt nicht und wenn ich [\\p{Punct}] nehme, wird ja auch nach allen (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~) gesucht.

Vielen Dank.

MfG

Sandy
 
Zurück