Java - regulárny výraz
Mám reťazec:
"abcdef&ghij&lkmn&op&qrstuvwxyz"
Ako mám z reťazca pomocou metódy replaceAll odstrániť všetky výskyty znakov "&" a textu nachádzajúceho sa medzi nimi? V tomto prípade by mal byť výsledný reťazec takýto:
"abcdeflkmnqrstuvwxyz"
Mělo by to spravit tohle AFAIK:
string.ReplaceAll("&", "")
Moc složité to teda nebylo, regulární výraz je supertriviální - ampersand není metaznak, a tudíž se dá normálně nahradit. Javu neumím, ale stačilo mi optat se foogla na syntax...
BTW, Foogla znáš?
aha. ty chceš nahrazovat text mezi ampersandy..
pak je to "&.+&" místo "&"
ee tak to taky nejde.
Imho je lepší napsat vlastni funkci, pac ja to tu zkousim a nemam sajn.
nejpodobnejsi je .&*&. ale to nahradi jeden před a jeden za navíc (&*& -nejde taky)
Díkec, funguje to
nemělo to fungovat
ale tohle mi funguje:
edit : takhle je to lepší no:
.replaceAll("&[^&]*&","");
A čo toto: &.*?&
jj to mi jde taky.
funguje ale je když to tam máš jednou, tedy jednu tu řadu s těma divnejma znakama
hm.. to je divné. Mělo by to fungovat vícenásobně, pokud je implementace RegExpu správná. RegExp by měl procházet celý text a nahrazovat všechny (i vícenásobné) stringy - alespoň dle definice.
i Javovská verze by to měla takto dělat: replaceAll("regex", "replacement") replaces all regex matches inside the string with the replacement string you specified.
nevim ale "&.+&" mi nefungovalo, alespon né tak jak jsem pochopil, že to chce tazatel, ostatně mužeš si to zkusit
funguje jak má. Snažil jsem se "napasovat" sed-em na funkci "relaceall"
edit: už to vidím
haf, no mě to furt nejde : vyrazy.rar (je to dost pomalé, komp toho má dnes plné zuby)
Mne to fungovalo napriek tomu som sa rozhodol pre vlastné riešenie:
Pretože, mám podozrenie že regulárne výrazy sú málo efektívne.
Java síce nie je moja šálka kávy, ale ak by som nemohol použiť regulárne výrazy, nerobil by som to po písmenkách:
Predpokladám že metóda indexOf je tiež implementovaná tak, že v cykle prechádza všetky znaky po jednom písmene až kým nenarazí na hľadaný znak/reťazec.
A co tak pouzit tridu StringTokenizer?