CLOB aus einer Oracle DB in einen String einlesen und Ausgeben

ok ich schau mich mal um danke.
ich muss aus dem String MIMEBODY allerdings nur einen Teil ausgeben und zwar zischen TO: und (Subject: oder Mime-Version:)
wie mach ichs am besten?
 
Ein String hat die Methode indexOf()

Code:
 		  String suchString = "Dies ist ein Test";
   		  int suchWort =  suchString .indexOf("ein");
suchWort ist dann 9.
Am besten schaust du dir auch mal "Der Umgang mit Zeichenketten" in dem von mir erwähnten Online-Buch an.
 
Zuletzt bearbeitet:
Kann ich dieses StringWriter Objekt sWriter in einen String schreiben? Um dann diese String Methoden zu nutzen?
Ich habs jetzt mal so probiert:
Code:
				  sWriter.write(str);
				  String suchString = sWriter;
				  int suchWort =  sWriter.indexOf("To:");
							  System.out.println(" MIMEBODY: " + sWriter[suchWort]);
 
also sieht so aus wie oben halt:

Code:
while ((str = br.readLine()) != null) {
  sWriter.write(str);
  String suchString = sWriter;
  int suchWort =  sWriter.indexOf("To:");
System.out.println(" MIMEBODY: " + sWriter[suchWort]);
}
 
Hallo,

1. Du kannst den StringWriter keinem String zuweisen, aber
Code:
String suchString = sWriter.toString();
ist möglich, und dann kannst du die Stringoperationen benutzen.

2. In der while-Schleife wird der StringWriter gefüllt, da kannst du diese Zuweisungen noch nicht machen.

Es gibt halt mehrere Möglichkeiten:
- StringWriter komplett füllen und dann bearbeiten
- Während du Zeilenweise einliesst, die Zeile (str) schon prüfen und dann nur das brauchbare behalten.
 
so habs jetzt so was auch funktioniert:

Code:
	  String suchString = sWriter.toString();
	  int suchWort =  suchString.indexOf("To:");
	  int nextWort = suchString.indexOf("Subject:");
	  System.out.println(suchString);

wie kann ich jetzt die inhalte von suchString von suchWort bis nextWort ausgeben?
Also ich will das er alles nach To: ausgibt bis er Subject findet!
 
Hallo,

da gibt es z.B. die Methode substring
Code:
	 String ergebnis = suchString.substring(suchWort,nextWort);
Das funktioniert aber nur, wenn auch beide gesuchten Zeichenketten im Suchstring in der richtigen Reihenfolge vorhanden sind. Also vorher besser überprüfen.
 
Code:
      while ((str = br.readLine()) != null) {
	sWriter.write(str);
	String suchString = sWriter.toString();
	int suchWort =  suchString.indexOf("To:");
	int nextWort = suchString.indexOf("Subject:");
	//String ergebnis = suchString.substring(suchWort,nextWort);
	System.out.println(suchWort);
	System.out.println(nextWort);
	System.out.println(" MIMEBODY: " + sWriter);
     }

seiht jetzt so aus! allerdings kommt es manchmal vor, dass in dem suchString kein "Subject:" vorkommt! deshalb krieh ich ein OutofBounderies als Fehler!
Wenn Subject nicht vorkommt soll er deshalb nach "Mime" suchen! habs über eine if-verzweigung probiert:

Code:
if (nextWort < 0){
nextWort = suchString.indexOf("Subject:");
}

klappt aber nicht! wie gehts richtig? kann jemand weiterhelfen?
 
Hallo,

das hab ich dir doch geschrieben, das du das prüfen musst..

Code:
	  while ((str = br.readLine()) != null) {
  	sWriter.write(str);
  	String suchString = sWriter.toString();
  	int suchWort =  suchString.indexOf("To:");
  	int nextWort = suchString.indexOf("Subject:");
  	if (nextWort < 0)
  		nextWort = suchString.indexOf("Mime:");
  	//String ergebnis = suchString.substring(suchWort,nextWort);
  	System.out.println(suchWort);
  	System.out.println(nextWort);
  	System.out.println(" MIMEBODY: " + sWriter);
  	 }

Dein Ansatz war ja auch richtig, aber du suchst nach dem falschen Wort.
Code:
 	if (nextWort < 0)
  		nextWort = suchString.indexOf("Mime:");
 
Sry war ein Tippfehler!

Code:
			while ((str = br.readLine()) != null) {
			   sWriter.write(str);
			   String suchString = sWriter.toString();
			   int suchWort =  suchString.indexOf("To:");
			   int nextWort = suchString.indexOf("Subject:");
			   if (nextWort < 0)
				   nextWort = suchString.indexOf("Mime-Version:");
			   String ergebnis = suchString.substring(suchWort,nextWort);
			   System.out.println(suchWort);
			   System.out.println(nextWort);
			   System.out.println(" MIMEBODY: " + ergebnis);
			}

liefert mir den Fehler:
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java(Compiled Code))
at Result.showFailedMails(Result.java:126)
at DBConnect.main(DBConnect.java:25)
Exception in thread "main

WIESO`?
 
Zurück