# Eingebettete <iframe> mittels Konsole in Array speichern



## iMrQuestion (26. Nov 2020)

Heyho,

und zwar möchte ich gerne folgendes bei einem Java-Programm über die Konsole als Text eingeben und dann jede Zeile bzw. immer wenn eine neuer iFrame beginnt in ein Array speichern. Also bei 0 soll der erste Link sein, bei 1 der 2. usw.
Das halt beleibig oft bzw. mit einer vorgegeben Anzahl.
Ich hab dies auch schon mit String.split(\n) etc. versucht, war aber leider nicht erfolgreich :/
Hatte auch die Idee, das er immer teilen könnte, sobald "><" vorkommt. Hab dazu aber leider keien Möglichkeit gefunden


```
<iframe width="560" height="315" src="[MEDIA=youtube]XfYJFtkBLLk[/MEDIA]" ........." allowfullscreen></iframe>

<iframe width="560" height="315" src="[MEDIA=youtube]XfYJFtkBLLk[/MEDIA]" ........." allowfullscreen></iframe>

<iframe width="560" height="315" src="[MEDIA=youtube]XfYJFtkBLLk[/MEDIA]" ........." allowfullscreen></iframe>

<iframe width="560" height="315" src="[MEDIA=youtube]XfYJFtkBLLk[/MEDIA]" ........." allowfullscreen></iframe>
```


Hoffe Ihr könnt mir weiterhelfen.
MfG
MrQuestion


----------



## krgewb (27. Nov 2020)

Geht das nicht?

```
String[] meinArray = s.split("><");
```


----------



## iMrQuestion (27. Nov 2020)

krgewb hat gesagt.:


> Geht das nicht?
> 
> ```
> String[] meinArray = s.split("><");
> ```


Doch das geht schon. Allerdings kommt das zweimal vor. Habe es gerade mit "</iframe>" probiert und das klappt dann. Muss es dann allerdings wieder hinzufügen, da ich das ja brauche und .split das ja wegstreicht. Wollte das eigentlich vermeiden.

Wenn ich das allerdings so machen würde, hab ich das Problem, dass ich eine Exception "Index ... out of bounds for length ..." bekomme. Das liegt offenbar daran, dass die Strings zusammen zu lang sind. Wenn ich das Probeweise stark kürze, bekomme ich die Exception nicht mehr. So hilft mir das aber nicht wiklich. 
Hat da jmd eine Idee?


----------



## krgewb (27. Nov 2020)

iMrQuestion hat gesagt.:


> Ich hab dies auch schon mit String.split(\n) etc. versucht, war aber leider nicht erfolgreich :/


Ich mache das so:

```
split("\\n");
```


----------



## mihe7 (27. Nov 2020)

Für HTML gibt es als Standardantwort JSoup. Wenn Du Dein Vorhaben zu Fuß umsetzen willst, hier mal eine Möglichkeit (Achtung: quick & dirty, ungetestet)

```
public List<String> getNonNestedTags(String tagName, String content) {
    String openingTag = "<" + tagName;
    String closingTag = "</" + tagName;

    List<String> result = new ArrayList<>();

    int opening = content.indexOf(openingTag);
    while (opening != -1) {
        int closing = content.indexOf(closingTag, opening);
        if (closing != -1) {
            closing = content.indexOf(">", closing);
        }
        if (closing != -1) {
            closing++;
            result.add(content.substring(opening, closing));
        }
        opening = closing;
    }
    return result;
}
```


----------



## iMrQuestion (29. Nov 2020)

Heyho und danke für eure Antworten.

Zwecks der Antwort von mihe7 hab ich nicht durchgeblickt und war auch etwas verwirrt zwecks HTML.

Ich hab das Konzept am Ende verworfen, da das Array nie mehr als 3 Links speichern konnte, da es ihm zu groß war.
Am Ende habe ich dann mit einem Buffered Reader die Links aus einer .txt ausgelesen und durch mehrere Methoden gleich ausgegeben, sodass nicht mehrere Links gespeichert werden mussten.
Damit habe ich am Ende das Programm fertig bekommen^^

Vielen Dank für eure Hilfe.

Wenn das nicht von selbst passiert kann das Thema gerne geschlossen werden.


----------



## mihe7 (29. Nov 2020)

Schön, wenn Du das Problem lösen konntest. Noch eine Frage:


iMrQuestion hat gesagt.:


> Zwecks der Antwort von mihe7 hab ich nicht durchgeblickt


Bzgl. JSoup oder des Codes?


----------

