Zeichen in String einfügen, Fehlersuche

flashOr

Erfahrenes Mitglied
Hi,
ich möchte gerne einen innerhalb eines Strings an eine bestimmte Stelle etwas einfügen.
Der zu verändernde String sieht so aus:
umbruch|test|test|test|test|test|test|test|test|test|test|umbruch|test|test|test|test|test|test|test|test|test|test|umbruch|test|test|test|test|test|test|test|test|test|test|

Jetzt möchte ich gerne das nach jedem zehnten | ein Umbruch geschieht so das ich am Ende so etwas herausbekomme:
umbruch|test|test|test|test|test|test|test|test|test|test|
umbruch|test|test|test|test|test|test|test|test|test|test|
umbruch|test|test|test|test|test|test|test|test|test|test|

Mein Funktion sieht so aus: Dazu ist vielleicht noch zu sagen das der String vorher durch ein encode der Klasse URLEncoder gejagt wird. Die | Zeichen werden also als "%7C" im String dargestellt.

Code:
public String addBreak(String s) {
		int index = 0;
		String startString = "";
		String endString = "";
		startString = s;
		String midString = "";
		for(int i=0;i<s.length();i++) {
			if(i==0) {
				index = s.indexOf("%7C", index+3);
			}
			else {
				index = startString.indexOf("%7C", index+3);
			}
				
			if(index == -1 ) {
				return startString;
			}
			if(i%10==0 && i>0) {
				endString = startString.substring(index+3); 
				midString = startString.substring(index,index+3); 
				startString = startString.substring(0,index); 
				
				midString = midString.replaceFirst("%7C", "%7C%0D%0A");
				startString = startString + midString + endString;
				
			}
		}
		
		return startString;
	}
}

Ich kann leider auch nach stundenlanger Suche die Ursache meines Problems nicht finden, dass es nur in der ersten Zeile klappt. Alle weiteren Zeilen werden am falschen Ort umgebrochen oder gar nicht.
Seht ihr den Fehler?
 
Also Lust deinen Code zu debuggen hab ich jetzt grad nicht, was mir aber spontan auffällt ist, dass du versuchst zwei Suchmethoden miteinander zu vereinen.
//edit: Stimmt gar nicht was hier stand.. Vergiss es ;)

Das klappt trotzdem:
Java:
  private String addBreak( String in )
  {
    String ret = null;
    StringBuffer buf = new StringBuffer( in );
    int i = 0;
    int count = 0;
    
    while( i < in.length() )
    {
      if( ( i = buf.indexOf( "%7C", i + 3 ) ) < 0 )
        break;
      
      count++;
      
      if( count == 10 )
      {
        buf.replace( i, i + 3, "%7C%0D%0A" );
        count = 0;
      }
    }
    ret = buf.toString();
    return ret;
  }
 
Zuletzt bearbeitet:
Hi :-)

Code:
public String addBreak(String s) {
		int index = 0;
		String startString = "";
		String endString = "";
		startString = s;
		String mi0dString = "";
		for(int i=1;i<s.length();i++) {
			index = startString.indexOf("%7C", index+3);
			if(index == -1 ) {
				return startString;
			}
			if(i%11==0 ) {
				endString = startString.substring(index+3); 
				midString = startString.substring(index,index+3); 
				startString = startString.substring(0,index); 
				
				midString = midString.replaceFirst("%7C", "%7C%0D%0A");
				startString = startString + midString + endString;
				
			}
		}
		
		return startString;
	}
}

so funktioniert es. Dein Fehler war, dass es 11 mal | ist bevor der umbruch kommt. Die obere IF-Anweisung brauchst du auch gar nicht.

mfg






,
 
Hey,
ein riesengroßes Dankeschön. Der Fehler lag an der ersten If-Anweisung und der 11. Also vielen Dank. Dann hatte ich es ja schon fast ;)
 
Zurück