josch
12.04.2009, 15:32
Hallo!!
Als erste würde ich gerne wissen ob substirng schneller ist als regex
(wovon ja schon fast auszugehen ist)
in meinem fall hab ich einen insgesamt 223 zeichen langen string der über
ein socket kommt und feste feldlängen hat.
Sprich in diesem string befinden sich mehrere Felder deren Länge fix ist.
Zwischen jedem Feld ist noch ein leerzeichen um sie visuell zu trennen.
der rest der felder die nicht voll ausgenutzt werden sind mit leerzeichen aufgefüllt.
Ich hatte das ganze über substring gelöst, finde aber regex wesentlich eleganter
Jetzt habe ich mir einen ausdruck geschrieben der mir diesen String in seine
einzelnen felder "explodet"
Funktioniert auch wunderbar, nur leider ist der erste Match der komplette
String selber.
Sprich ich bekomme als ersten match in meinem array den kompletten string
und dann folgen die einzelnen felder in den weiteren array slots.
Wie lässt sich das verhindern?
mein ausdruck sieht so aus
^(.{12}) (.{25}) (.{25}) (.{8}) (.{25}) (.{25}) (.{8}) (.{24}) (.{5}) (.{4}) (.{4}) .{45} (.{1})$
das ergebis sieht dann so aus:
array{
[0] = "Feld 1 Feld 2 Feld 3 Feld 4 Feld 5"
[1] = "Feld 1"
[2] = "Feld 2"
[3] .................
}
und ich würde gerne den inhalt von slot 0 komplett durch den regulären ausdruck verhindern.
Und eigentlich wollte ich jetzt nicht sowas machen wie einfach slot 0 entfernen bevor ich das
array zurückgebe ^^
Als erste würde ich gerne wissen ob substirng schneller ist als regex
(wovon ja schon fast auszugehen ist)
in meinem fall hab ich einen insgesamt 223 zeichen langen string der über
ein socket kommt und feste feldlängen hat.
Sprich in diesem string befinden sich mehrere Felder deren Länge fix ist.
Zwischen jedem Feld ist noch ein leerzeichen um sie visuell zu trennen.
der rest der felder die nicht voll ausgenutzt werden sind mit leerzeichen aufgefüllt.
Ich hatte das ganze über substring gelöst, finde aber regex wesentlich eleganter
Jetzt habe ich mir einen ausdruck geschrieben der mir diesen String in seine
einzelnen felder "explodet"
Funktioniert auch wunderbar, nur leider ist der erste Match der komplette
String selber.
Sprich ich bekomme als ersten match in meinem array den kompletten string
und dann folgen die einzelnen felder in den weiteren array slots.
Wie lässt sich das verhindern?
mein ausdruck sieht so aus
^(.{12}) (.{25}) (.{25}) (.{8}) (.{25}) (.{25}) (.{8}) (.{24}) (.{5}) (.{4}) (.{4}) .{45} (.{1})$
das ergebis sieht dann so aus:
array{
[0] = "Feld 1 Feld 2 Feld 3 Feld 4 Feld 5"
[1] = "Feld 1"
[2] = "Feld 2"
[3] .................
}
und ich würde gerne den inhalt von slot 0 komplett durch den regulären ausdruck verhindern.
Und eigentlich wollte ich jetzt nicht sowas machen wie einfach slot 0 entfernen bevor ich das
array zurückgebe ^^