Methoden Textverarbeitung mit Strings

snibbe

Mitglied
Hallo Leute,
für eine Textverarbeitung habe ich 2 Methoden die mir Probleme bereiten.

Zum einen die Methode:
Code:
String getWort(int startPosition)
Diese Methode soll einen Teilstring ab der gewünschten startPosition (als Index) bis zum nächsten Leerzeichen bzw. bis zum Textende liefern.

Erstellt habe ich diese wie folgt:
Java:
public String getWort(int startPosition)	{
String getWort = eingabeText.substring(startPosition);
return getWort;
}
eingabeText ist dabei eine String Variable, die den Text enthält.
Die Methode funktioniert so auch, liefert aber bislang nur den Teilstring ab der startPosition. Wie kann ich den Teilstring bis zum Leerzeichen begrenzen?

Die zweite Methode:
Code:
String getText(int maxBreite)
Diese Methode soll in den Text (bislang ohne newlines) nun newlines einfügen, sodass der Wert maxBreite je Zeile nicht überschritten wird. Innerhalb eines Wortes darf allerdings nicht getrennt werden. Es wird also ein Absatztext erstellt. Ausnahme: Sollte ein Wort länger als maxBreite sein, darf die Zeilenbreite maxBreite überschritten werden.

Erstellt habe ich diese bisher wie folgt:
Java:
public String getText(int maxBreite)	{
int stringlaenge = eingabeText.trim().length();
if (stringlaenge > maxBreite)	{
String getText = eingabeText.replace(" ", "\n");
return getText;
}
else return eingabeText;
}
Da nach jedem Wort bzw. Satzende ein Leerzeichen vorhanden ist wollte ich das entsprechende Leerzeichen durch eine newline ersetzen. Auch wird ein Wort so nicht getrennt. Das klappt soweit auch, allerdings werden momentan alle Leerzeichen bei erreichen von maxBreite ersetzt. Wie kann ich hier erreichen, dass dass Ersetzen erst bei erreichen von maxBreite geschieht?


Vielen Dank im Voraus.
 

eRaaaa

Top Contributor
Hallo Leute,
für eine Textverarbeitung habe ich 2 Methoden die mir Probleme bereiten.

Zum einen die Methode:
Code:
String getWort(int startPosition)
Diese Methode soll einen Teilstring ab der gewünschten startPosition (als Index) bis zum nächsten Leerzeichen bzw. bis zum Textende liefern.

Erstellt habe ich diese wie folgt:
Java:
public String getWort(int startPosition)	{
String getWort = eingabeText.substring(startPosition);
return getWort;
}
eingabeText ist dabei eine String Variable, die den Text enthält.
Die Methode funktioniert so auch, liefert aber bislang nur den Teilstring ab der startPosition. Wie kann ich den Teilstring bis zum Leerzeichen begrenzen?
Es gibt auch die Methode
Code:
String	substring(int beginIndex, int endIndex) 
          Returns a new string that is a substring of this string.
wo du einen Endindex angeben kannst. Jetzt musst du nur noch wissen wo sich das Leerzeichen (ab dem Startindex) befindet. Dafür gibt es auch Methoden in der String-Klasse z.B.
Code:
 int	indexOf(int ch, int fromIndex) 
          Returns the index within this string of the first occurrence of the specified character, starting the search at the specified index.
 

Michael...

Top Contributor
Erstellt habe ich diese wie folgt:
Java:
public String getWort(int startPosition)	{
String getWort = eingabeText.substring(startPosition);
return getWort;
}
eingabeText ist dabei eine String Variable, die den Text enthält.
Die Methode funktioniert so auch, liefert aber bislang nur den Teilstring ab der startPosition. Wie kann ich den Teilstring bis zum Leerzeichen begrenzen?
Die Klasse String bietet zwei Methoden indexOf(...) mit dieser könnte man nach dem Index des nächsten Leerzeichens suchen und so den gewünschten Substring zurückgeben.
Wie kann ich hier erreichen, dass dass Ersetzen erst bei erreichen von maxBreite geschieht?
Auch hier könnte die Methode indexOf helfen, in dem man von Leerzeichen zu Leerzeichen "springt" und das vorhergehende Leerzeichen durch einen Zeilenumbruch ersetzt falls die max. Breite überschritten wurde.
 

snibbe

Mitglied
Vielen Dank für die Ansätze =)
Die erste Methode konnte ich damit wie folgt lösen:
Java:
public String getWort(int startPosition)	{

String getWort = eingabeText.substring(startPosition);
char leerzeichen = 32;														
int indexleerzeichen = getWort.indexOf(leerzeichen);
int stringlaenge = eingabeText.trim().length();			
int endPosition = startPosition + indexleerzeichen;				

if (indexleerzeichen == -1)	{			// bei -1 wurde kein Leerzeichen gefunden
endPosition = stringlaenge;
}

String neuerText = eingabeText.substring(startPosition, endPosition);
return neuerText;
}
Diese scheint nach diversen Test soweit auch zu funktionieren. Bei der anderen Methode komme ich aber leider mit der Umsetzung nicht weiter. Reicht hierfür eine If Anweisung aus?
 

FaxXer

Mitglied
Mal zu deiner anderen Methode.
Du könntest eine Liste erstellen und immer den Substring bis zu maxBreite reinschreiben. So kannst du dann die Liste zurück geben. Wenn du es dann ausgeben oder in einer Text Datei speichern willst machst du einfach immer ein /n/r dran. Bzw könntest dies natürlich auch beim einfügen in die Liste.

Den Subtring erstellen könntest du indem du mit einem Iterator jedes Zeichen deines String durchgehst und bis zur maxBreite zählst.
 

snibbe

Mitglied
Ob das die eleganteste Lösung ist, kann ich aber nicht sagen. getWortAnzahl() ermittelt dabei die gesamten Wörter des eingegebenen Textes. Die erste Methode getWort(int startPosition) habe ich zur Hilfe genommen, da diese bereits einzelne Wörter ausgeben kann.
Java:
public String getText(int maxBreite) {
      
      int zaehler = 0;
      int wortanzahl = getWortAnzahl();
      int index = 0;
      
      String zeile = "";
      String textausgabe = "";
      
      while (zaehler < wortanzahl) {
         String einzelnesWort = getWort(index);				
         zaehler++;
         
         int laenge = einzelnesWort.length();    				
         index = index + laenge + 1;							
         
         if (zeile.length() + laenge + 1 > maxBreite)	{
            textausgabe = textausgabe + zeile + "\n";  			
            zeile = "";
         }
         
         zeile = zeile + " " + einzelnesWort ;
         zeile = zeile.trim();						
      }
      
      textausgabe = textausgabe + zeile; 
      
      return textausgabe;
   }
 

FaxXer

Mitglied
Achso okay, ich sehs als ne gute Lösung an. Habs selber probiert.. ^^
Es funktioniert aber noch nicht, hatte noch ein paar Probleme mit den Feinheiten :p und dann keine Zeit/Lust mehr. Hier als alternativer Ansatz:

Java:
import java.text.CharacterIterator;
import java.text.StringCharacterIterator;
import java.util.LinkedList;




public class Test {
	public static void main ( String[] args )
	{
		
		System.out.println(getText(5));
		
		
	}
	
	
	public static LinkedList<String> getText(int maxBreite)    {
		String eingabeText = "Hallo, ich bin ein langer Eingabetext und warte drauf getrennt zu werden, sodass ein Blocktext entsteht.";
		CharacterIterator it = new StringCharacterIterator(eingabeText);
		LinkedList<String> Text = new LinkedList<String>();
		int Breite = maxBreite;
		int y = 0;

		for (char ch=it.first(); ch != CharacterIterator.DONE; ch=it.next()){
					if(it.getIndex() == Breite)
					{
						y ++;
						if(it.current() != ' ')
						{
							String tmp = null;
							int nextLeer = eingabeText.indexOf(" ", it.getIndex());
							//nextLeer +=1;
							if (it.getIndex() <= maxBreite)
							{
								tmp = eingabeText.substring(0,nextLeer);
							}
							else
							{
								tmp = eingabeText.substring(y,nextLeer);
							}
							Text.add(tmp);
							y = it.getIndex();

							Breite += maxBreite;
						}
						else
						{
							int i = it.getIndex();
							String tmp = eingabeText.substring(y, i);
							Text.add(tmp);
							Breite += maxBreite;
							y = it.getIndex();

						}
					}
		
			
		}
				return Text;
}
	}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Gleichzeitiges ersetzen mehrerer Strings Java Basics - Anfänger-Themen 7
R Datentypen Das Verhalten von Strings als Datentypen Java Basics - Anfänger-Themen 7
N Nachkommastellen von Strings Java Basics - Anfänger-Themen 3
T Strings unveränderlich???? Java Basics - Anfänger-Themen 22
B Alle Strings bis zu einer Maimallänge aufzählen, die Bedingung erfüllen Java Basics - Anfänger-Themen 13
S Die durchschnittliche Länge der Strings Java Basics - Anfänger-Themen 11
M Operatoren Strings mit Vergleichsoperatoren, funktioniert das? Java Basics - Anfänger-Themen 9
S Variablen Letzte Zeile eines Strings entfernen Java Basics - Anfänger-Themen 1
D Strings aus Excel-Datei einlesen Java Basics - Anfänger-Themen 2
P9cman Tipps für Rekursive Aufgaben mit Strings oder allgemein Java Basics - Anfänger-Themen 2
sserio StringBuilder und Strings Java Basics - Anfänger-Themen 8
J Größe eines Strings in Pixel Java Basics - Anfänger-Themen 18
schredder Strings und reguläre Ausdrücke - Methode mit return string.matches Java Basics - Anfänger-Themen 5
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
N Strings verpflechten Java Basics - Anfänger-Themen 4
G Strings auf Gleichheit prüfen - Aufgabe vom Prof. Java Basics - Anfänger-Themen 5
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
L Strings aneinanderhängen Java Basics - Anfänger-Themen 2
M Strings vergleichen Java Basics - Anfänger-Themen 10
Nerdinfekt BMI Rechner, fehler beim Zurückgeben des Strings? Java Basics - Anfänger-Themen 2
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
S 2 Strings mit Equals vergleichen Java Basics - Anfänger-Themen 11
Q Besitzen zwei Strings identische Buchstaben, nur in anderer Reihenfolge? Java Basics - Anfänger-Themen 10
marcooooo Separator zwischen allen Zeichen eines Strings einfügen Java Basics - Anfänger-Themen 29
C Ternärer Operator mit Strings Java Basics - Anfänger-Themen 3
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
P Verketten, Aneinanderreihen von Strings Java Basics - Anfänger-Themen 2
M Strings mit gerader und ungerader Länge ausgeben Java Basics - Anfänger-Themen 10
J Alle Werte eines Strings zusammen addieren Java Basics - Anfänger-Themen 15
W Strings und das parsen Java Basics - Anfänger-Themen 8
D Frage zu Strings einer Exception Java Basics - Anfänger-Themen 4
D Vergleichen von Strings Java Basics - Anfänger-Themen 6
M Konkatenation von zwei Strings Java Basics - Anfänger-Themen 6
J Abbruchbedingung in Schleife/ Untersuchung von Strings Java Basics - Anfänger-Themen 2
S Buchstaben in Großbuchstaben (Strings) Java Basics - Anfänger-Themen 5
X Anagramm mit Strings und Methode Java Basics - Anfänger-Themen 53
P geschachtelte Schleife mit Strings Java Basics - Anfänger-Themen 2
P Strings mit der Axt zerteilen Java Basics - Anfänger-Themen 7
F Alle Zeichenkombinationen eines Strings iterativ herausfinden Java Basics - Anfänger-Themen 26
K Strings hochzählen Java Basics - Anfänger-Themen 20
J Strings untereinander in einer Liste vergleichen Java Basics - Anfänger-Themen 18
B Frage zu: String... strings -> Ungleiche Anzahl an Parameter? Java Basics - Anfänger-Themen 4
F Vergleiche mit charAt funktioniert bei Strings nicht, was tun? Java Basics - Anfänger-Themen 5
T Probleme mit Strings Java Basics - Anfänger-Themen 6
J Unveränderbarkeit von Strings Java Basics - Anfänger-Themen 3
O Klammerung bei Strings Java Basics - Anfänger-Themen 10
A Liste aus drei Strings erstellen Java Basics - Anfänger-Themen 5
N Zwei Strings mit "==" vergleichen warum TRUE Java Basics - Anfänger-Themen 2
G Teil(e) eines Strings entfernen wenn spezifische Zeichen (< & >) vorkommen Java Basics - Anfänger-Themen 5
D ergebnis.matches("[1-9]?[0-9].[0-9][0-9]?") ein teil eines größeren Strings Java Basics - Anfänger-Themen 12
J Breite eines Strings bestimmen Java Basics - Anfänger-Themen 4
D Zwei Strings sind gleich bei if aber nicht true Java Basics - Anfänger-Themen 2
F JList Elemente mit Strings vergleichen Java Basics - Anfänger-Themen 12
J Strings sind gleich werden aber ungleich ausgewertet Java Basics - Anfänger-Themen 2
N Vergleich von Strings schlägt fehl.. Java Basics - Anfänger-Themen 5
B 4 Strings, Anfangsbuchstaben muss unterschiedlich sein Java Basics - Anfänger-Themen 12
P Strings in String Array schreiben Java Basics - Anfänger-Themen 13
J Input/Output Strings aneinander reihen mit while schleife Java Basics - Anfänger-Themen 25
B mir nur die Gesamtzahl von einzigartigen Strings aus Array ausgeben lassen Java Basics - Anfänger-Themen 5
R Erste Schritte Sicheres einlesen eines Strings Java Basics - Anfänger-Themen 2
F Maximale Länge eines Strings Java Basics - Anfänger-Themen 5
J Best Practice Datum Differenz aus zwei Strings ermitteln Java Basics - Anfänger-Themen 8
Jinnai4 Strings ersetzen Java Basics - Anfänger-Themen 9
R Übergeben eines Array Strings an einen Spinner Java Basics - Anfänger-Themen 4
L Rekursiv zwei Strings vergleichen Java Basics - Anfänger-Themen 3
L Prüfe, ob die im String Array enthaltenen Strings aufsteigend sind. Java Basics - Anfänger-Themen 19
J Algorithmus - Strings auf eigene Reihenfolge miteinander vergleichen Java Basics - Anfänger-Themen 4
DaCrazyJavaExpert Variablen Zahlen aus Strings auslesen Java Basics - Anfänger-Themen 4
C 2 Strings Java Basics - Anfänger-Themen 15
T befehle unterschiedlicher anzahl an strings wiedergeben Java Basics - Anfänger-Themen 2
JavaNewbie2.0 Strings in andere Klassen importieren. Java Basics - Anfänger-Themen 2
D BlueJ Java: Strings voneinander trennen Java Basics - Anfänger-Themen 11
javaerd Wie kann ich Brute Force Methode mit Strings erweitern Java Basics - Anfänger-Themen 1
R Erste Schritte Strings "einrücken" Java Basics - Anfänger-Themen 3
Yamie ArrayList<Object> als Liste von Strings ausgeben? Java Basics - Anfänger-Themen 15
B gemeinsames Vorkommen der charactere von 2 Strings als String zurückgeben Java Basics - Anfänger-Themen 5
R Teilinhalt eines Strings testen Java Basics - Anfänger-Themen 10
H Erste Schritte JTree: Instanzen einer Klasse speichern oder Namen/Strings... Java Basics - Anfänger-Themen 4
L Werte von Strings ? Java Basics - Anfänger-Themen 1
L Strings und Arrays - Expand Java Basics - Anfänger-Themen 12
I Schachbrett aus beliebigen Strings erstellen Java Basics - Anfänger-Themen 3
Syncopated Pandemonium Verketten von Strings funktioniert nicht Java Basics - Anfänger-Themen 4
F Wahrscheinlichkeit von Strings Java Basics - Anfänger-Themen 3
MiMa Splitten eines Strings Java Basics - Anfänger-Themen 5
T Hashfunktion für Strings Java Basics - Anfänger-Themen 3
C Zeilenumbruch für langes Strings Java Basics - Anfänger-Themen 2
J Variablen Strings mit Zeilenumbrüchen in neues Array Element Java Basics - Anfänger-Themen 1
T Datentypen compareTo() u. equals() bei Strings Java Basics - Anfänger-Themen 3
H Strings vergleichen & sortieren Java Basics - Anfänger-Themen 20
H Erste Schritte Längstes Wort eines Strings herausfinden Java Basics - Anfänger-Themen 7
D Problem beim umwandeln eines Strings in eine Dzezimalzahl Java Basics - Anfänger-Themen 6
G Strings mit Scanner (nextLine) einlesen Java Basics - Anfänger-Themen 7
T Strings ersetzen mit \ Java Basics - Anfänger-Themen 10
K Strings bearbeiten Java Basics - Anfänger-Themen 14
N Bestimmte Zeichen eines Strings umwandeln Java Basics - Anfänger-Themen 4
L Java Strings Buchstaben vertauschen Java Basics - Anfänger-Themen 4
L Strings in einem JOptionPane farbig Java Basics - Anfänger-Themen 2
A Wie bekomme ich zwei Strings in eine ArrayList Java Basics - Anfänger-Themen 4
C Chars eines Strings mit for schleife rückwärts auslesen Java Basics - Anfänger-Themen 8
J Buchstabe (char) an zufällige Position eines Strings einfügen Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben