String Split

01/07/2012 01:12 uragan#1
hallo

wie kann ich am besten so einen string splitten?
"ababaaazzzzzzzzzzzzzzzzzzzzzzzzzzzacacaaazzzzzzzz zzzzzzzzzzzzzzzzzzzadadaaazzzzzzzzzzzzzzzzzzzzzzzz zz"


"a" ist immer gleich
"z" sind verschiedene Zeichen
01/07/2012 02:10 MoepMeep#2
Die Frage ist, wo du ihn splitten willst.
01/07/2012 02:17 lolkop#3
am besten geht das ganze über die regEx funktionen.

hier ein beispiel:
Code:
$string = 'ababaaa wordz1 acacaaa wordz2 adadaaa wordz3'
$split = StringRegExp($string, '(?:a.{1}a.{1}aaa)?(?s)(.+?)(?:a.{1}a.{1}aaa|\z)', 3)
For $i=0 To UBound($split)-1
	ConsoleWrite($split[$i]&@CRLF)
Next
01/07/2012 02:35 uragan#4
lolkop , das ist super
nun wird leider nur wordz1 , wordz2,.. angezeigt

es ist aber wichtig dass die delimiter auch angezeigt werden

ababaaawordz1
acacaaawordz2
adadaaawordz3

ist dies möglich?
01/07/2012 03:32 lolkop#5
stringsplit beinhaltet auch nicht die delimiter.

willst du die auch mit in deinem ergebnis haben, und hast keinerlei weitere informationen über den string, musst du diese wohl mit einer extra regex operation auslesen, und zum string hinzufügen.

Edit:
hier ein beispiel dafür:
Code:
$string = 'ababaaa wordz1 acacaaa wordz2 adadaaa wordz3 aeaeaaa wordz4 afafaaa wordz5 agagaaa wordz6 ahahaaa'
$split = StringRegExpSplit($string, 'a.{1}a.{1}aaa')
$delimiter = StringRegExp($string, '(a.{1}a.{1}aaa)', 3)
For $i=0 To UBound($split)-1
	ConsoleWrite($delimiter[$i]&$split[$i]&@CRLF)
Next

Func StringRegExpSplit($string, $delimiter)
	Local $split = StringRegExp($string, '(?:'&$delimiter&')?(?s)(.+?)(?:'&$delimiter&'|\z)', 3)
	Return $split
EndFunc
01/07/2012 13:03 uragan#6
sehr nett, danke, kann geclosed werden

ach doch nicht ganz,

lolkop , kann man dort noch eine Abfrage machen, damit nur gesucht wird
Quote:
ababaaa | acacaaa | axacaaa
und nicht
Quote:
aaabaaa
oder
Quote:
abaaaaa
also es darf an der 2ten stelle und an der 4 stelle kein "a" sein



EDIT:

habs
Quote:
StringRegExp($string, '(a[^a]{1}a[^a]{1}aaa)', 3)