Wörter aus einer txt datei lesen

chillerStudent

Bekanntes Mitglied
Hallo,

ich weiß, wie ich Zeilen aus einer datei lese. Nun möchte ich Wörter aus den einzelnen Zeilen lesen, damit ich bei der Ausgaben etwas dazwischen schreiben kann.

zum Beispiel steht in einer txt datei zahlen, strings und chars mit leerzeichen:

1 2 wasserball - internet

jetzt will ich die einzelnen zeichen lesen und ein komma dazwischen schreiben.

hier mein code nur zum lesen der zeilen:

Java:
		try {
			BufferedReader in = new BufferedReader(new FileReader("MyFile.txt");
			String zeile;
			while((zeile=in.readLine()) != null) 
				System.out.println(zeile);
			}
		} catch (Exception e) {
			//Fehler!!
		}
 
du willst nach jedem Zeichen ein Komma machen also so?

Code:
1, ,2, ,w,a,s,s,e,r,b,a,l,l, ,-, ,i,n,t,e,r,n,e,t,

Und lass bitte den Exception Block nicht leer und ich würde auch nicht gleich auf alle reagieren sondern das etwas spezifizieren.
 
du willst nach jedem Zeichen ein Komma machen also so?

Code:
1, ,2, ,w,a,s,s,e,r,b,a,l,l, ,-, ,i,n,t,e,r,n,e,t,

ungefähr. Nur es sollen nicht zwei kommas zwischen zwei zeichen stehen.
Edit zum ersten Beitrag: Ich muss auch zeichen ersetzen können.

Und lass bitte den Exception Block nicht leer und ich würde auch nicht gleich auf alle reagieren sondern das etwas spezifizieren.

ok.🙂
 
Nur es sollen nicht zwei kommas zwischen zwei zeichen stehen.
Das tritt wegen den Leerzeichen auf, diese kann man ja davor entfernen.

So in etwa? Warum brauchst du das eigentlich?

Java:
public class Test {

	public static void main(String[] args) {
		String neu = "";
		String s = "1 2 wasserball - internet";
		char[] f = s.replaceAll(" +", "").toCharArray();	
		for (char a : f) {
			neu = neu + a + ",";
		}
		System.out.println(neu);

	}
}
 
du willst nach jedem Zeichen ein Komma machen also so?

Code:
1, ,2, ,w,a,s,s,e,r,b,a,l,l, ,-, ,i,n,t,e,r,n,e,t,

ahh nein, habe nicht richtig hingeguckt:autsch: Es soll immer nach jedem wort ein komma geschrieben werden.
also: 1,2,wasserball,-,internet

man man... sry

ich glaube man muss jeden einzelnen String ansprechen. Wie geht das?
 
Nicht so super easy aber gibt den BreakIterator (BreakIterator (Java 2 Platform SE v1.4.2))

Beispiel glaube ich aus der Insel:

Java:
import java.text.BreakIterator;
import java.util.Locale;

public class BreakIteratorTest
{
  static void out( String s, BreakIterator iter )
  {
    int last = iter.first();
    int next = iter.next();    // erstes Wort einlesen.

    for ( ; next != BreakIterator.DONE; next = iter.next() )
    {
      System.out.println( s.subSequence( last, next ) );
      last = next;
    }
  }

  public static void main( String args[] )
  {
    String helmutKohl = "Ich weiß, dass ich 1945 fünfzehn war und 1953 achtzehn.";

    BreakIterator iterator = BreakIterator.getWordInstance();
    iterator.setText( helmutKohl );
    out( helmutKohl, iterator );

    helmutKohl = "Das deutsche Volk hat nun mal beschlossen, weniger Kinder zu zeugen. "+
    "Das ist eine Sache, die wir nicht einmal den Sozialdemokraten anhängen können.";

    iterator = BreakIterator.getSentenceInstance( Locale.GERMAN );
    iterator.setText( helmutKohl );
    out( helmutKohl, iterator );
  }
}
 
Satzzeichen nach Worten wie Kommas werden nicht separiert, genausowenig wie Bindestriche. Dioe packt aber auch der Breakiterator nicht.
 
dein Problem ist noch leicht schwammig.
Wenn zBsp.
"... Zahn-
stocher...."
Im Text steht also Fließtext, wirds schwierig.

Hast du vielleicht immer dieses Schema "Zahl Zahl Wort - Wort" ?
Willst du die Trennzeichen, also dein Minus("-") auch separieren oder nur rausfiltern?
uswusf....

Du musst dir schon genau überlegen, was du alles beachten musst und wie es zerlegt werden soll.
Dann einfach Schritt für Schritt realisieren, aus der Retorte wirds das wahrscheinlich nicht geben.

Gruß Vanny
 
was spricht nochmal gegen
Code:
String#replace(" ", ",")
?

Also ich muss jeden einzelnen String der Zeile ansprechen können, damit ich bestimmte zeichen ersetzen kann oder hinzufügen kann.

Als ausgabe soll z.b. raus kommen:
Code:
 1,2,wasserball bis : internet

Den doppelpunkt muss ich auch irgendwie da rein bekommen.
deswegen frage ich hier wie ich die einzelne string ansprechen kann.

BreakIterator darf ich nicht benutzen, kenn ich auch nicht.
 
Java:
String[] str = line.split(" ")

Sowas evtl.?

EDIT: Vorher machst du vlcht. noch einen
Code:
replace(" - ", "-")
und nach dem Split nochmal einen
Code:
replace("-", " : ")
 
Zuletzt bearbeitet:
Ich weiß zwar nicht, wie due diese Ausgabe erzeugt hast, aber ich hoffe mal, du weißt schon ob des Einsatzes under der Syntax von Arrays.

mit String[] str = zeile.split(" ") splittest du die Zeile an allen Leerzeichen. Für jeden Teilstring wird ein Feld im Array belegt und zum Schluss hast du ein Feld mit Teilstring (ohne die Leerzeichen), die du in einer Schleife durchlaufen kannst...

Im Übrigen macht split mit s gar nichts, es wird ein neues String-Array zurückgegeben...
 
Also ich muss jeden einzelnen String der Zeile ansprechen können, damit ich bestimmte zeichen ersetzen kann oder hinzufügen kann.

Als ausgabe soll z.b. raus kommen:
Code:
 1,2,wasserball bis : internet

Den doppelpunkt muss ich auch irgendwie da rein bekommen.
deswegen frage ich hier wie ich die einzelne string ansprechen kann.

BreakIterator darf ich nicht benutzen, kenn ich auch nicht.

DU musst dir mal ein bisschen über deine Aussagen Gedanken machen.

Was ist ein "einzelner String" für dich? Das ist nicht klar! Ist bei dem OriginalString "Internet-Auktion" Internet, - und Auktion jeweils ein einzelner String oder nicht? Oder bei einem Komma? Oder oder oder.

Ein Split nach Leerzeichen bringt logischerweise bei sowas wie "ich dachte, dass..." nichts.
 
Java:
//main
Scanner MyFile = openFile(args[0]);
Scanner line = new Scanner(MyFile.nextLine());

static Scanner openFile(String file) throws FileNotFoundException{
 return new Scanner(new FileInputStream(file));
}

static MyMethod(Scanner s) {
 int a = s.nextInt();
 int b= s.nextInt();
}

Er wirft mir bei der variable b in MyMethod ein InputMismatchException. Warum?
In meiner datei MyFile steht: 1 - 2
 
Also erstens: die Methide MyMethod wird nie aufgerufen.
Zweitens: was sollen diese vielen Scanner... da verliert man ja völlig den Überblick. Schreib doch einfach:
Java:
Scanner MyFile = new Scanner(new FileInputStream(file));
String line = MyFile.nextLine();

EDIT: Dass dir bei b eine Exception geworfen wird, liegt wohl daran, dass das nächste Zeichen hinter dem ersten Int ein char ist ('-') (was mit den Leerzeichen dazwischen passiert, weiß ich grade nicht...). Was wurde denn aus dem String#Split-Vorschlag?
 
Zuletzt bearbeitet:
Java:
int b= s.nextInt();

wirft eine InputMismatchException, wenn das nächste Zeichen kein Integer ist. In diesem Fall ist das nächste Zeichen ein '-', definitive kein Integer.
 

Neue Themen


Zurück
Oben