# String in String ausschneiden!



## vegane-milch (29. Mrz 2012)

Hallo,

Ich habe ein kleines Problem damit ein String aus einem String auszuschneiden.
Ich habe folgenden Text:


```
+OK message follows
 Date: Mon, 18 Oct 2004 04:11:45 +0200
 From: Someone <someone@example.com>
 To: wiki@example.com
 Subject: Test-E-Mail
 Content-Type: text/plain; charset=us-ascii; format=flowed
 Content-Transfer-Encoding: 7bit
```

Aus diesem möchte die Betreffszeile herauslesen (Subject: Test-E-Mail).
Dafür habe ich dann dieses hier getestet.


```
String s = ganzeEmail.substring(ganzeEmail.indexOf("Subject:"),ganzeEmail.indexOf("\n", ganzeEmail.indexOf("Subject:")));
```

Doch leider klappt es nicht 
Ich stehe einfach auf dem Schlauch!

Mit freundlichen Grüßen
vegane-milch


----------



## Marco13 (29. Mrz 2012)

Was gibt dieses Programm bei dir aus?

```
class SubstringTest
{
    public static void main(String args[])
    {
        String s =
            "+OK message follows"+"\n"+
            " Date: Mon, 18 Oct 2004 04:11:45 +0200"+"\n"+
            " From: Someone <someone@example.com>"+"\n"+
            " To: [email]wiki@example.com[/email]"+"\n"+
            " Subject: Test-E-Mail"+"\n"+
            " Content-Type: text/plain; charset=us-ascii; format=flowed"+"\n"+
            " Content-Transfer-Encoding: 7bit    "+"\n";

        String t = s.substring(s.indexOf("Subject:"),s.indexOf("\n", s.indexOf("Subject:")));
        System.out.println(t);
    }
}
```


----------



## pl4gu33 (29. Mrz 2012)

also bei mir gibt der Text, wenn ich ihn mit "\n" erstelle, das aus was du haben willst daher wird eher am Text selber liegen denk ich

edit: zu spät

eine Alternative wäre vll. sowas

```
String t = s.substring(s.indexOf("Subject:"),s.indexOf("Content-Type", s.indexOf("Subject:")));
```

dann dürfte bloß im Betreff kein Content-Type stehen  also nicht umbedingt eine tolle Lösung^^


----------



## vegane-milch (29. Mrz 2012)

Hallo Danke,
dein Programmauschnitt funktioniert also muss es bei mir am imput String liegen. Dieser hat scheinbar keine "\n" am Ende einer Zeile.
Ich lese den Text aus einer Email Zeile für Zeile aus und speicher dieses in einen String. Dabei muss ein wohl ein Fehler entstehen.

Ich suche nochmal weiter.

vegane-milch


----------



## vegane-milch (29. Mrz 2012)

Okay hat sich erledigt.
Es lag einfach nur am input Text 

Habe es jedoch einfacher gelöst mit stringtokenizer! Klappt perfekt! Trotzdem danke für die Hilfe 

vegane-milch


----------



## Marco13 (29. Mrz 2012)

StringTokenizer? Hast du auch mal einen Betreff mit Leerzeichen verwendet?  (Klingt fehleranfälliger - was hast du gegen den Einzeiler (!) mit substring?)


----------



## vegane-milch (4. Apr 2012)

Hallo Marco,
ist es überhaubt möglich einen Betreff mit Zeilenumbruch zu senden?
Wenn es möglich ist ist dein Einwand berechtigt. 
Ich mochte StringTokenizer ganz gerne da er den Text schön in Bruchstücke umwandelt 

Die andere Möglichkeit ist meiner Meinung nach ein wenig unübersichtlich. Jedoch fängt sie Fehler ab sollte ein Zeilenumbruch im Betreff stehen.
Ich werde beides mal testen.

Jedoch habe ich eine weitere Frage:

Ich habe diesen Text:


```
+OK message follows
Date: Mon, 18 Oct 2004 04:11:45 +0200
From: Someone <someone@example.com>
To: wiki@example.com
Subject: Test-E-Mail
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit

Dies ist eine Test-E-Mail

.
```

Nun möchte ich den Text der E-Mail haben. Doch wie durchsuche ich am einfachsten den Text nach einem Zeilenumbruch in einer einzelen Zeile.
Mit indexof ist es ja möglich die Position herauszufinden doch es gibt nunmal mehr als nur einen Zeilenumbruch in dem Text.

Hat jemand eine Idee? 

mit freundlichen Grüßen
vegane-milch


----------

