Im String Array suchen

Kenta1561

Bekanntes Mitglied
Hallo,

ich möchte wissen, wie ich bestimmte Teile von einem String Array rauslesen lassen kann.
Wenn ich zum Beispiel so ein .txt-Datei habe:

"1"
{
//text
//text
//text
//text
}

"2"
{
//text
//text
//text
}

"3"
usw...

und die ganze .txt-Datei in einen String-Array einlesen lasse, wie kann ich nur die Teile vom String Array bekommen, die zu einer Nummer gehören?
Also wenn ich zum Beispiel nach der Nummer 1 suche, dass ich dann einen neuen String Array bekomme aber diesmal nur mit den Werten zwischen den geschweiften Klammern nach der "1".

Ich habe zuerst gedacht, dass man die Index-Nummer raussucht, wo z.B. "1" als String in einem String-Array gespeichert ist und dann einfach die folgenden Zeilen bis zur schließenden geschweiften Klammer gelesen werden, jedoch können die Texte (hier als //text markiert) eine beliebige Menge an Zeilen haben, wodurch ich nicht festlegen kann, wie viele Zeilen denn nun nach "1" gelesen werden sollen.

LG
Kenta1561
 
Ich habe zuerst gedacht, dass man die Index-Nummer raussucht, wo z.B. "1" als String in einem String-Array gespeichert ist und dann einfach die folgenden Zeilen bis zur schließenden geschweiften Klammer gelesen werden, jedoch können die Texte (hier als //text markiert) eine beliebige Menge an Zeilen haben, wodurch ich nicht festlegen kann, wie viele Zeilen denn nun nach "1" gelesen werden sollen.

Lösung dazu: Suche die Zahl, die nächste Zeile sollte ja dann eine "{" sein und dann lies solange bis du eine "}" vorfindest 😉
 
Mit String-Array lesen ist gemeint, du gehst es in einer Schleife durch und vergleichst mit startsWith("{") ob du eine öffnende Klammer findest. Dann setzt du dir einen Merker und liest alle folgenden Strings in dem Array z.B. in ein neues Array, schreibst sie in eine andere Datei oder was immer du mit machen willst. Und das solange bis die Zeile mit einer "}" beginnt. Dann setzt du den Merker wieder zurück. Und bei der nächsten "{" begnnt das Spiel von vorne
 
Hallo,

danke für die Antworten. Ich habe es jetzt geschafft, die genannte Stelle in einen String zu speichern. Wie kann ich jetzt zum Beispiel, wenn ich so etwas habe:

"1"
{
a
b
c
}

"2"
{
d
e
f
g
h
}

"3"
{
i
j
k
l
}

und zum Beispiel die Inhalte von "3" in einen String-Array gespeichert habe (also i, j, k und l), wie kann ich dann z.B. bei "1" statt a,b und c nun die Inhalte von "3" (i,j,k,l) einfügen? Also den Inhalt von "1" durch den Inhalt von "3" ersetzen, "3" bleibt so wie sie ist.

LG
Kenta1561
 
Am besten eine ordentliche Objektstruktur erstellen und Funktionalität in Methoden auslagern, dann hat man die Komplexität heruntergebrochen und somit sind auch solche Aufgaben dann kein Problem mehr.
Mein Vorschlag wäre eine Klasse
Code:
+-------------------+
| TextBlock         |
+-------------------+
| - lineNumber: int |
| - text: String[]  |
+-------------------+
Dann kannst du das auch in einer Liste verwalten und auch nach Bedarf verändern.
 
Du kannst mit split wie oben in meinem post alle aufteilen.
danach könntest du alle ersten beiden und letzten beiden (oder alle zahlen und geschweiften klammern) durch ein leerzeichen oder eben "" ersetzen.

wenn man das geschickt macht (ich mutmaße momentan nur) kann man z.b. mit String.trim() nur auf die inhalte kommen. oben genannte datenstruktur könnte dann meiner meinung nach befüllt werden
 

Zurück
Oben