Kompletten Textseiten in gleich lange zeilen schneiden

Status
Nicht offen für weitere Antworten.

PELLE

Bekanntes Mitglied
und jede zeile in ein String Array kopieren?

da mir hier keiner antwortet: http://www.java-forum.org/de/viewtopic.php?t=32074 und selbstgespräche langweilig werden mit der Zeit...

mache ich einen neuen Thread auf mit anderen Titel und 50 % anderer Frage :lol: in der HOffnung niemand merkts...

Ich habe z.B. 10 Zeilen text in einer JTArea. Nun möchte ich diese 10 zeilenf in einen String einlesen, so dass ich z.B. 600 Zeichen habe. Wie mache ich es nun, dass aus diesen 600 Zeichen 60 Zeichen je 10 String Array variablen werden ala

String meinArray[0] = "1.zeile Text"
String meinArray[1] = "2.zeile Text"
String meinArray[2] = "3.zeile Text"
String meinArray[3] = "4.zeile Text"
String meinArray[4] = "5.zeile Text"
usw.

an das Ende von jedem String element möchte ich einen Zeilenumbruch hinzufügen wie "1.zeile Text" + "\n" usw.

Zeichenkette = Zeichenkette + meinArray /das ganze in ne for schleife mit i-zähler...

danach möchte ich alle Array Elemente mit der Methode array.toString(meinString) in einen String umwandeln und der replaceAll methode übergeben...


WIE bekomme ich das aufsplitten hin ??? bzw. stelle ich fest wann wie und wo ich 60 zeichen haben usw?
 

Leroy42

Top Contributor
Du hast wohl keine Antwort bekommen, weil keiner dich so
richtig verstanden hat. Deine Beschreibung mit konkreten Zahlen
und nicht passenden Beispielen verwirrt.

Z.B. hat "1.zeile Text" 12 Zeichen; mit Zeilenumbruch 13. Aber keine 60 ???:L


Willst du diese Beispielzeile jetzt mit 47 Leerzeichen auffüllen?
Wenn ja, wo? Am Ende? Am Anfang?

Bitte ein (kleines) ausführliches Beispiel
 

PELLE

Bekanntes Mitglied
ne sorry Leroy dass mit den "1.zeile Text" ist doch nur ein BEISPIEL !!!

ich möchte wissen wie ich Text dessen länge unbestimmt ist, mal 2 zeilen oder mal 20 zeilen sein kann in gleich lange STrings zerteile wobei z.B. jeder String 60 zeichen haben darf, das dürfte doch verständlich sein oder???
 

PELLE

Bekanntes Mitglied
was mich ebenso wundert ist, wenn ich einen

Code:
String mein String = "Hallo ich heisse,\n Bernd Kopp \n und nicht Waltraud\n";

definiere, und diesen String mit replaceAll ausgebe, dann wird bei der ausgabe der zeichenkette auch der Zeilenumbruch berücksichtigt sprich ich bekomme 3 zeilen untereinander!!!!

mache ich aber folgenden code:

--------------------------------------------
Code:
for(int i = 0; i < splitlaenge; i++)
           {
               while(meinToken.hasMoreTokens())
              {

                 String einzelZeilen = meinToken.nextToken();
                 zeilenArray[i] = einzelZeilen;

                 meinString = meinString + zeilenArray[i] + "\n"; // zu jeder zeile  wird ein "\n" angehängt um einen    

                                                                                           Zeilenumbruch zu erzwingen, der zwar statt findet,
                                                                                    aber die sätze werden nie umgebrochen in die nächste zeile??
              }
           }

            
            String neuerText = zielJTA.replaceAll("(?>\\%info\\%) *", meinString);
            nfoBereich.setText(neuerText);
------------------------------------------------------

dann verstehe ich überhaupt nicht, warum diese Zeile code

Code:
meinString = meinString + zeilenArray[i] + "\n";
und der zeilenumbruch darin keine Auswirkung hat wenn ich das ganze dann mit
Code:
String neuerText = zielJTA.replaceAll("(?>\\%info\\%) *", meinString);

ausgebe???? Zeilenumbruch wird gemacht, aber der Text in "meinString" wird nicht untereinander ausgegeben??
 

PyroPi

Aktives Mitglied
PELLE hat gesagt.:
Zeilenumbruch wird gemacht, aber der Text in "meinString" wird nicht untereinander ausgegeben??

Bin mir nicht sicher, ob ich dich richtig verstanden habe, aber das ist für mich ein Widerspruch. Wenn der Zeilenumbruch gemacht wird, dann wird der Text doch untereinander ausgegeben.

Mit deinem letzten Beispiel und den Zeilen
Code:
String zielJTA = "Anfang|%info%|Ende";
String neuerText = zielJTA.replaceAll("(?>\\%info\\%) *", meinString);

System.out.println(meinString);
System.out.println(neuerText);
bekomme ich folgende Ausgabe:
Code:
Hallo ich heisse,
 Bernd Kopp 
 und nicht Waltraud

Anfang|Hallo ich heisse,
 Bernd Kopp 
 und nicht Waltraud
|Ende

Funktioniert also mit dem Zeilenumbruch!
 

PELLE

Bekanntes Mitglied
Ne funktioniert nicht, da du mich falsch verstehst... bzw. nicht richtig gelesen..., denn ich behaupte ja gerade, dass es funktinoiert mit diesem code:

Code:
String mein String = "Hallo ich heisse,\n Bernd Kopp \n und nicht Waltraud\n";

nur eben dieser Code sollte das gleiche machen sprich ich füge immer wieder an das array element ein "\n" zeiclenumbruch zeichen sprich jede zeile sollte untereinander ausgegeben werden, tuts aber nicht:
Code:
for(int i = 0; i < splitlaenge; i++)
           {
               while(meinToken.hasMoreTokens())
              {

                 String einzelZeilen = meinToken.nextToken();
                 zeilenArray[i] = einzelZeilen;

                 meinString = meinString + zeilenArray[i] + "\n"; // zu jeder zeile  wird ein "\n" angehängt um einen   

                                                                                           Zeilenumbruch zu erzwingen, der zwar statt findet,
                                                                                    aber die sätze werden nie umgebrochen in die nächste zeile??
              }
           }

           
            String neuerText = zielJTA.replaceAll("(?>\\%info\\%) *", meinString);
            nfoBereich.setText(neuerText);

lies dir die comments mal durch!

Der STring meinString setzt sich hier aus den array-elementen zusammen und zu jedem element sprich an das zeilenende, füge ich ein + "\n"; dennoch ist die ausgabe nicht richtig, da alles geschriebene in eine Zeile geht, aber die zeilenumbrüche werden komischerweise gemacht???
 

PELLE

Bekanntes Mitglied
ok habe gerade einen Test gemacht und weiß jetzt auch, warum der Zeilenumbruch nicht nach jedem array-element stattfindet ...:

das ist der probetext aus der informationTA (JTArea-instanz):

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
ccccccccccccccccccccccccccccccccccccccccccccccccccccc
ddddddddddddddddddddddddddddddddddddddddddddddddddddd
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
fffffffffffffffffffffffffffffffffffffffffffffffffffff

das habe ich gecodet:

Code:
meinString = meinString + zeilenArray[i] + "123";

demnach müsste java an jede Zeile, da jedes array element eine zeile enthalten sollte... den string "123" dranhängen tut er aber nicht siehe ausgabe: (Der Zeilenumbruch des abc-textes ist von mir um das forenbild nicht zu strecken übrigens...)


aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
ccccccccccccccccccccccccccccccccccccccccccccccccccccc
ddddddddddddddddddddddddddddddddddddddddddddddddddddd
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
fffffffffffffffffffffffffffffffffffffffffffffffffffff123

also wenn ich anstatt "123" das "\n" nehme weiß ich jetzt auch, warum die zeilen nicht unter einander geschrieben werden, da das dranhängen von "\n" nicht an jede zeile erfolgt sondern am ende???

kann mir jemand sagen , ob ich da mit dem array was falsch mache usw?

---------------------------------------------------------------------------------------

Jetzt ist mir nochmals was aufgefallen....:

dddddddddddddddddddddddddddddddddddddddddddddddd
dddddddddddddddddddddddddddddddddddddddddddddddd
dddddddddddddddddddddddddddddddddddddddddddddddd
dddddddddddddddddddddddddd
<------------- 1 Zeile frei
gggggggggggggggggggggggggggggggggggggggggggggggg
gggggggggggggggggggggggggggggggggggggggggggggggg
gggggggggggggggggggggggggggggggggggggggggggg
<------------- 1 Zeile frei
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj

genau so steht der text in der informationTA (JTArea-instanz) und so wird er ausgegeben:

dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj

also wird der text untereinander ausgegeben aber nur aus einem grund habe ich festgestellt:

Code:
meinString = meinString + zeilenArray[i] + "\n";
das ist der alte code, doch seit ich im obigen text immer eine komplette leerzeile habe, wird auch das "\n" zu jeder zeile hinzugefügt sprich der stringtokenizer liest nicht zeile für zeile sondern in meinem beispiel oben liest er 4 zeilen mit "dddddddd"-buchstaben und danach erkennt er die "1 Zeile frei" als Zeilenumbruch, was much ich aber tun, damit java den originaltext in meiner informationTA (JTArea) so erkennt, dass jede Zeile ein token darstellt sprich von den "dddddddd"-buchstaben müsste ich dann 4 Zeilen bzw. 4 token haben, dann würde auch an jedem ende ein "\n" stehen sprich ein zeilenumbruch angehängt werden!

Ihr versteht mich?
 

Illuvatar

Top Contributor
Das wird mir zu konfus. Hier, KSKB:

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class SplitTest extends JFrame {
  // Anfang Variablen
  private JTextArea jta = new JTextArea("", 1, 1);
  private JButton jbu = new JButton();
  // Ende Variablen

  public SplitTest(String title) {
    // Frame-Initialisierung
    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { System.exit(0); } });
    Container cp = getContentPane();
    cp.setLayout(new BorderLayout());

    // Anfang Komponenten
    jta.setText("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccc
dddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefffffffffffffffffffffffffffffffffffffffffffffffffffff");
    cp.add(new JScrollPane (jta), BorderLayout.CENTER);
    jbu.setText("Split!");
    cp.add(jbu, BorderLayout.SOUTH);
    jbu.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        jbuActionPerformed(evt); } });

    // Ende Komponenten

    pack();
    setVisible(true);
  }

  // Anfang Ereignisprozeduren
  public void jbuActionPerformed(ActionEvent evt) {
    String text = jta.getText();
    //Splitten
    String[] split = new String[(int)Math.ceil(text.length() / 60)];
    for (int i = 0; i < split.length; i++){
      int from = i * 60;
      int to = (i+1) * 60;
      //Falls es nicht aufgeht
      if (text.length() < to){
        to = text.length();
      }
      split[i] = text.substring(from, to);
    }
    //Und wieder zusammensetzen
    String meinString = "";
    for (int i = 0; i < split.length; i++){
      meinString = meinString + split[i] + "123\n";
    }
    System.out.println(meinString);
  }
  // Ende Ereignisprozeduren

  public static void main(String[] args) {
    new SplitTest("SplitTest");
  }
}

Edit: Zeilenumbruch im String
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B .txt Datei in einen kompletten String konvertieren Allgemeine Java-Themen 20
G Kompletten Frame mit allen Objekten resizen Allgemeine Java-Themen 10
S Kompletten Order Zippen Allgemeine Java-Themen 5
thE_29 Kompletten Zeichensatz aendern Allgemeine Java-Themen 8
R HTML Seiten in formatierte Textseiten konvertieren Allgemeine Java-Themen 3
M String shuffeln, Anfang und Ende aber bleiben gleich Allgemeine Java-Themen 15
P Wird double und float auf jedem Computer gleich berechnet? Allgemeine Java-Themen 10
A Datentypen Gregorian Calendar - 2 Daten sind gleich?? Allgemeine Java-Themen 3
U Set erklären dass objekte gleich sind Allgemeine Java-Themen 12
L Koordinaten des Mouselistener nicht überall gleich Allgemeine Java-Themen 13
R Panel mit 8 gleich großen "fenstern" Allgemeine Java-Themen 11
J Suche: Tool zum Auffinden gleichnamiger Klassen (Name und Package gleich) in unteschiedlichen JARs Allgemeine Java-Themen 5
woezelmann Object nach Deserialisierung nicht mehr gleich Allgemeine Java-Themen 13
R Font der auf allen Platformen gleich aussieht? Allgemeine Java-Themen 7
A Javakonsolenfenster geht gleich wieder zu Allgemeine Java-Themen 6
M CheckBox in JTable - ich verzweifle gleich Allgemeine Java-Themen 2
J MD5-Prüfsumme von ein und demselben String nicht gleich Allgemeine Java-Themen 3
K Date: getTime immer gleich Allgemeine Java-Themen 4
S erst containsKey oder gleich get Allgemeine Java-Themen 9
D Java gleich in Maschinensprache übersetzen? Allgemeine Java-Themen 23

Ähnliche Java Themen

Neue Themen


Oben