2016-07-01 15 views
0

Wir möchten das Wort in eine Zeichenfolge um neue Zeile Zeichen (\ n) .Basically, drücken wir die EINGABETASTE, um a zu starten Neue Zeile.Java String Wrapping: Wie umschlinge ich Wörter in einem String unter Neue Zeile Zeichen ( n)

Dies ist die Eingabetaste, um eine neue Zeile in unserer Nachricht zu erstellen, wenn sie gedrückt wird.

Eingabedaten:

String wird in Kommentarspalte erfasst. Kommentarspalte ist gegeben:

EDI ORDER-SAVE COMMENTS\nC3 Generic\nLOC 0833\nExpected arrival 01/07/2016\nOTYPE NE\nTRKPC 01 GM/00007643020008361321 

wir daran versucht:

string s = "EDIORDER-SAVE COMMENTS C3 Generic LOC 0833 Expected arrival 01/07/2016 OTYPE NE TRKPC 01 GM/00007643020008361321" ; 

StringBuilder sb = new StringBuilder(s); 

int i = 0; 
while ((i = sb.indexOf(" ", i + 20)) != -1) { 
    sb.replace(i, i + 1, "\n"); 
} 

Erwartete Daten nach der Transformation: Zeilenumbruch ist Zeilenendmarke

Long String of Comment field should Splits in 6 different lines 

EDI ORDER-SAVE COMMENTS 

C3 Generic 

LOC 0833 

Expected arrival 01/07/2016 

OTYPE NE 

TRKPC 01 GM/00007643020008361321 

Genaue Daten nach der Ausgabe aussehen wie:

SalesOrder NComment       SalesOrderLine     StockCode 
183590 EDI ORDER-SAVE COMMENTS       1         
183590             2       abc-defg-13OZ-24    
183590 C3 Generic         37         
183590 LOC 0833          38         
183590 Expected arrival    01/07/2016  39         
183590 OTYPE NE          40         
183590 TRKPC 01 GM/00007643020008361321    51 

Jede Hilfe wäre sehr willkommen!

+0

Was die Spaltung Kriterien ist? Es kann nicht "" sein, da dieses Zeichen auch in der Mitte von "LOC 0833" als Beispiel existiert. – c0der

+0

Teilen bei neuer Zeilenbreite (\ n). und maximale Breite Länge ist 20. – NEO

+0

Wenn "\ n" nicht ist s es kann nicht als Splitting-Kriterien verwendet werden, So muss es eine bestimmte Länge (oder Längen) oder ein anderes Zeichen sein. – c0der

Antwort

1

Sorry, ich bekomme nicht wirklich, was Sie erreichen wollen. Möchten Sie die Pause VOR dem Wort einfügen, das das 20. Zeichen passiert?

StringBuilder sb = new StringBuilder(s); 
    int currentSpaceFound = sb.indexOf(" "); 
    int i = 1; 
    while (currentSpaceFound != -1) { 
     int lastOccurence = currentSpaceFound; 
     currentSpaceFound = sb.indexOf(" ", currentSpaceFound + 1); 
     if (currentSpaceFound > (20 * i)) { 
      sb.setCharAt(lastOccurence, '\n'); 
      i++; 
     } 
    } 
    System.out.println(sb); 
+0

Ja wir wollen breakIterator einfügen, bevor das Wort, das durch 20. Zeichen geht, in 6 verschiedene Zeilen aufgeteilt werden soll im Beispiel erwähnt. – NEO

+0

Wir möchten dieses Programm von Java implementieren: http: //paste.ofcode.org/S4LEQM2RpEcre3PcYnbpxC – NEO

+0

Sie meinen, Inhalt der 6. Zeile ist falsch: es ist bis zur Marke. oder korrigiere mich, wenn ich das falsch interpretiere. – NEO

1

Ich denke, so etwas wie dies funktionieren sollte:

private String wrapComment(String comment, int length) { 

    if(comment.length() <= length) return comment; 

    StringBuilder stringBuilder = new StringBuilder(comment); 

    int spaceIndex = -1; 

    for(int i = 0; i < comment.length(); i ++) { 

     if(i % length == 0 && spaceIndex > -1) { 
      stringBuilder.replace(spaceIndex, spaceIndex+1, "\n"); 
      spaceIndex = -1; 
     } 

     if(comment.charAt(i) == ' ') { 
      spaceIndex = i; 
     } 

     stringBuilder.append(comment.charAt(i)); 
    } 

    return stringBuilder.toString(); 
} 

Testing:

String comment = "EDI ORDER-SAVE COMMENTS C3 Generic LOC 0833 Expected arrival 01/07/2016 OTYPE NE TRKPC 01 GM/00007643020008361321"; 
System.out.println(wrapComment(comment, 30)); 

Ausgang:

EDI ORDER-SAVE COMMENTS C3 
Generic LOC 0833 Expected 
arrival 01/07/2016 OTYPE NE TRKPC 
01 GM/00007643020008361321 
+0

Ja, es sieht ungefähr aus. Aber ich habe die erwartete Datenausgabe gegeben. es wird nur 6 Zeilen geben. – NEO

+0

Wir möchten etwas wie dieses Wort wrap implementieren: einfügen.ofcode.org/S4LEQM2RpEcre3PcYnbpxC Wenn möglich, möchten wir jeden Zeilenbereich durch \ n ersetzen – NEO

+0

Sie meinen, Sie wollen nach jeder Zeile einen weiteren Zeilenumbruch? – explv