# Teile eines Strings ausgeben



## MobiDick (27. Jan 2005)

derzeitiger Code


```
try{
	      Statement stmt = theConnection.createStatement();
		  rs = stmt.executeQuery("SELECT MIMEBODY FROM MAIL_QUEUE WHERE STATUS               LIKE 'failed'");
		  ResultSetMetaData rsmd = rs.getMetaData();
		  
		  while (rs.next()) {
			  StringWriter sWriter = new StringWriter();
			  BufferedReader br = new BufferedReader(rs.getCharacterStream("MIMEBODY"));
			  String str;

			  while ((str = br.readLine()) != null) {
				  sWriter.write(str);
			 }
			 
		  }
		  
		} 		
		catch(SQLException e){
		}
		catch (IOException e) {
		  e.printStackTrace();
		}
```

in SWriter steht der Text den ich in einen String schreiben will! 
Danach soll alles zwischen den Zeichen "To:" und "Subject" ausgegeben werden! 
Wie mach ichs ab besten?


----------



## foobar (27. Jan 2005)

Guck dir mla die Klasse Pattern an.


----------



## mic_checker (27. Jan 2005)

Bzw. mit substring und indexOf arbeiten -> API.
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html

Ansonsten hat foobar ja schon was passendes genannt:
http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html


----------



## MobiDick (28. Jan 2005)

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

wie kann ich jetzt nur den inhalt von suchString von suchWort bis nextWort ausgeben?!?[/code]


----------



## mic_checker (28. Jan 2005)

Wie bereits gesagt: Benutz substring:

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#substring(int)
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#substring(int,%20int)

Zu beachten ist das bei :


```
abc.substring(start,ende);
```

von start bis (ende - 1) geteilt wird.


----------



## MobiDick (28. Jan 2005)

```
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:


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

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


----------



## meez (28. Jan 2005)

So?

```
String suchString = sWriter.toString(); 
     int start =  suchString.indexOf("To:");
     int end=  suchString.indexOf("Subject:");
     if (end < 0)  suchString.indexOf("Mime");
     if (end < 0)  end = suchString.length();

     String resultat = suchString.substring(start + "To:".length(), end);
```


----------



## mic_checker (28. Jan 2005)

Allerdings überprüfst du nicht ob bei start was gefunden wurde. Es ist ja möglich das "To:" nicht vorkommt (oder ?). 
Falls nicht gibt indexOf ja -1 zurück und substring löst wieder ne Exception aus....


----------



## meez (28. Jan 2005)

mic_checker hat gesagt.:
			
		

> Allerdings überprüfst du nicht ob bei start was gefunden wurde. Es ist ja möglich das "To:" nicht vorkommt (oder ?).
> Falls nicht gibt indexOf ja -1 zurück und substring löst wieder ne Exception aus....



Vielen Dank, dass du mich aufgeklärt hast.... :wink:


----------



## MobiDick (31. Jan 2005)

ne leute hat nur ne OutofBounderies Exception gefehlt! naja so ist das halt )))


----------

