Biesterfeld: String in mehrdimensionales Array splitten

Beitrag lesen

Hej,

Und wie kriege ich den String denn erstmal überhaupt 'zerlegt'?

Mit Rekursion. Ich kann aber kein php, daher versuch ichs mal in Pseudocode:

Function seperateString{

Input:  { Liste strings, int level }
  Output: { List strings }

begin{
    /* (¹) */
    String seperator <- "\s(\*){"+level+"}(?=[^\*])"

for( int i <- 0; i < length( strings ); i <- i + 1 ) {
      Liste splitted <- preg_split( seperator, strings[i] )
      if length( splitted ) != 1 ) {
        strings[i] <- seperateString( splitted, level + 1 )
      }
    }
  }
  end
}

Function seperate {

Input: { String string }

begin {
    List text <- new List
    text[0] <- string;
    seperateString( l, 1);
  }
}

¹) Den regulären Ausdruck habe ich in Java getestet, hoffe er hilft dir trotzdem.

text[0]=Text0
text[1]=Text1
text[2]=Text2
text[2][1]=Text21
text[2][2]=Text22
text[2][2][1]=Text221
text[2][2][2]=Text222
text[3]=Text3
text[4]=Text4

Das Ergebnis sieht dann allerdings folgendermaßen aus:

text[0]
text[0][0]=Text0
text[0][1][0]=Text1
text[0][2][0]=Text2
text[0][2][1]=Text21
text[0][2][2][0]=Text22
text[0][2][2][1]=Text221
text[0][2][2][2]=Text222
text[0][3]=Text3
text[0][4]=Text4

Das äußerste unnötige Array wirst du schon selber wieder los ;-)

Beste Grüße
Biesterfeld

--
Art.1: Et es wie et es
Art.2: Et kütt wie et kütt
Art.3: Et hätt noch immer jot jejange
Das Kölsche Grundgesetz