String ellenőrzés
Adott egy fórum, és ott hozzászólás lehetősége. A hozzászólásokat szeretném ellenőrizni, hogy nyisson meg a felhasználó tagokat, amiket nem zár le. Tehát ha egy [b]-t megnyit és nem zár le akkor ne legyen félkövér a többi. Gondoltam hogy megszámoltatom a nyitó és a záró tagokat, és az egyezik akkor jó, de nem jó, mert kezdhet záróval, és nyitóval fejezi be. Tehát valami összetettebb dolog kellene.
Gondoltam olyasmire, hogy a string minden karaterét vizsgálom és magam döntöm el hogy nyit-e és zár-e, de ha lehet akkor jobb lenne egyszerűbb
■ Gondoltam olyasmire, hogy a string minden karaterét vizsgálom és magam döntöm el hogy nyit-e és zár-e, de ha lehet akkor jobb lenne egyszerűbb
Több megoldás lehetséges
Ha a helyes egymásba-ágyazásra akarsz figyelni, akkor pedig kell egy verem (vagy tömb), amibe belepakolsz minden nyitó esetén, és kiveszel záró esetén.
3 hibalehetőség:
- a végére nem ürül ki a verem: hiányzik néhány záró tag
- nem az van a verem tetején, amit éppen ki akarsz venni: rossz az egymásba ágyazás
- üres veremnél ki kellene venni valamit: hiányzik a nyitó tag
Off: kedvenc órai programozás feladataim közé tartozik a témakör :-)
quick'n'dirty
az én megoldásom gyors és egyszerű, kerüli a vermet, cserébe az általad említett problémára megoldást kínál.
Ellenben a nesting hibákat nem védi ki, szóval ha komolyabbat akarsz, marad a verem.
Én annó írtam js-t
Nem kell hozzá verem,
hibás
2. Pont a lényeget nem tudja (ami miatt a verem szóba került), próbáld ki erre:
Lorem [ i ]ipsum [ b ]dol[ /i ]or[ /b ]
.Köszi. Volt benne még egy
Volt benne még egy hiba, (.*) helyett (.*?) kell.
Azért a posztbeli problémát kezeli (ne legyenek árva tagek).
A keresztbeágyazás szűrésének rekurzív verziója (némi overheaddel):
Lorem [i ]ipsum [b ]dol[/i]or[/b] sit amet
még két apróság