Robert Lacroix: String splitten nach verschiedenen Teilstrings

Hi,
ich programmiere an einem Webboard für ASP. Gibt es eine einfache Möglichkeit einen String nach verschiedenen Teilstrings zu splitten, und in den selben Array zu schreiben ? Beispiel, ich habe einen String der folgendermaßen aufgebaut ist: "bla, bla1. bla2 bla2 ! bla3 ?" Jetzt will ich den gesamten String in ein Array aufteilen und zwar mit den Trennzeichen "?", "!" und ".", so dass der Array: Array(0) = "bla, bla1", Array(1) = "bla2 bla2" und Array(2) = "bla3" entsteht.
Danke, Robert.

  1. Hallo !

    einen String der Form   text="wort1;wort2;wort3;wort4"
    kannst du mit der Funktion  SPLIT den text anhand  *eines* Trennzeichens (hier jetzt das Semikolon)
    in einen Array unverwandeln.

    textarray=SPLIT(text,";")

    Ergebnis :

    z.B. in  textarray(0)  steht : wort1
           in  textarray(3) steht wort4

    ...

    Gruß
    Holger

    1. Moin Holger,
      das mit dem Split ist mir bekannt, nur kann man damit nur nach einem Trennzeichen splitten und in einen Array schreiben, ich brauche aber eine Function, die nach mehreren Trennzeichen splitten und die Trennzeichen auch öfters vorkommen dürfen. Die Version von Janco hab ich auch schon in Erwähgung gezogen, nur habe ich gedacht es gäbe eine einfachere Variante. Danke an alle für die Mühe.
      Robert.

  2. Hi Robert !

    Schau Dir folgenden Link dazu an :

    http://www.learnasp.com/learn/strings.asp

    cu

    Marcus

  3. Hallo!
    Können sich bei Dir die Trennzeichen wiederholen?
    Wenn Nein, dann würde ich einfach mit folgender Routine arbeiten:
    x  = 0
    While InStr(text,".")>0

    array(x) = left(text,InStr(text,".")-1)
    text = mid(text,InStr(text,".")+1,Len(text))

    x = x +1
    Wend

    Wenn Du das ganze dann noch in eine Function auslagerst, kannst Du sie für jedes Trennzeichen benutzen. Falls sich die Trennzeichen wiederholen, würd ich jetzt auf die Schnelle folgendes vorschlagen:

    lookfor = InStr(text,1.Trennzeichen)

    etc. halt so lange suchen, bis eins gefunden wurde

    x = 0

    While lookfor>0
    If InStr(text,1.Trennzeichen)>0 Then
      Abarbeitung wie oben
    ElseIf InStr(text,2.Trennzeichen)>0 Then
      s.o.
    ElseIf ...
    End If

    und jetzt wieder wie oben alle Trennzeichen für lookfor abarbeiten, bis das mit dem kleinsten InStr-Wert(ungleich 0) gefunden wurde, was oben natürlich auch gemacht werden muß.

    Wend

    Damit solltest Du es dann eigentlich haben. Die Funktion sieht zwar etwas unbeholfen aus(ich hoffe, daß ich alles so rüberbringen konnte, wie ich es wollte), aber auf die Schnelle fiel mir nix anderes ein.

    mfg
    JankoW

  4. Hi Robert!

    Du kannst die Zerlegung in JavaScript (bzw. JScript) coden. Die String.split()-Methode in JS erlaubt regulaere Ausdruecke:

    str = "bla, bla1. bla2 bla2 ! bla3 ?";
        blubb = str.split(/[.!?]/);

    Wenn Du die Leerzeichen, die um die eigentlichen Trennzeichen herum stehen, auch gleich weg haben willst, kannst Du

    blubb = str.split(/\s*[.!?]\s*/);

    verwenden.

    Bye, Calocybe