View previous topic :: View next topic |
Author |
Message |
dabac
Joined: 30 May 2006 Posts: 57
|
Posted: 18.09.2006 12:39 Post subject: Regular expressions - replace enter sa <br> |
|
|
Buduci da sam totalna daba za regular expressions, da li bi neki znalac htio pomoci sagraditi jednu jednostavniju funkciju?
Naime, sve se odigrava na klijentu, pomocu Javascripta:
Korisnik ispunjava textareu i pritiskom na gumb ne submita se forma, vec se upisani sadrzaj zapisuje u cookie.
Problem nastaje kad korisnik upise text u textareu u vise redaka.
Rijesio sam to bez regexp (koristenjem charCodeAt funkcija i trazenjem kodnih karaktera 13 i 10 i zamjenom istih za <br>, kao i drugih String funkcija), ali bi bilo cistije da koristim regexp, zar ne?
Ono za sto mi treba regexp je inverzna situacija:
Prilikom citanja sadrzaja cookieja i ispisa sadrzaja u textareu, textarea se puni sa stringom koji je krcat sa <br> tagovima.
E, sad bih tu prije toga htio vratiti kodne znakove 13 i 10 umijesto <br>, kako bih u textarei ponovo bio prikazan tekst u vise redaka; ako shvacate sto zelim reci...
Dakle treba mi jedan regexp u Javascriptu koji ce evaluirati taj string.
Unaprijed zahvaljujem!
EDIT:
Upravo sam nasao nesto slicno - doduse za PHP, ali vjerojatno ne bih trebao imati puno problema pretvaranjem u JS:
http://www.mi3dot.org/forum/viewtopic.php?t=7430&highlight=regexp
Pokusat cu to veceras pa javiti rezultat.
No, moja molba jos uvijek stoji zbog prvog dijela problema, dakle pretvaranje newline u <br> pomocu regexpa. Da li Javascript ima neku zgodnu funkciju kao sto je nl2br u PHP-u? |
|
|
Back to top |
|
|
Sulien
Joined: 04 Jan 2004 Posts: 2905 Location: Zagreb
|
Posted: 18.09.2006 13:46 Post subject: Re: Regular expressions - replace enter sa <br> |
|
|
dabac wrote: | Rijesio sam to bez regexp (koristenjem charCodeAt funkcija i trazenjem kodnih karaktera 13 i 10 i zamjenom istih za <br>, kao i drugih String funkcija), ali bi bilo cistije da koristim regexp, zar ne? |
pa ako znaš točno koji niz znakova tražiš (a znaš: 13 i 10) onda ti regexp zapravo ne treba
ja sam mislio da u cookie možeš spremiti bilo kakav string... nisam nikad probao, ali jesi siguran da ne možeš spremiti newline znak unutra?
inače za string replacement koristiš replace() funkciju
Code: | "foo<br>bar".replace('<br>', "\n") |
|
|
|
Back to top |
|
|
dabac
Joined: 30 May 2006 Posts: 57
|
Posted: 18.09.2006 13:54 Post subject: Re: Regular expressions - replace enter sa <br> |
|
|
Sulien wrote: |
pa ako znaš točno koji niz znakova tražiš (a znaš: 13 i 10) onda ti regexp zapravo ne treba
|
Pa, trebao bih jer je ovo moje primitivno rjesenje, a kamoli da trazim: kodni znak od < pa kodni znak od b pa kodni znak od r pa kodni znak od > ... Zar nije opcepriznata stvar da su regexpi najbolje rjesenje u tom slucaju?
Sulien wrote: |
ja sam mislio da u cookie možeš spremiti bilo kakav string... nisam nikad probao, ali jesi siguran da ne možeš spremiti newline znak unutra?
|
Ponasa se u Exploreru da newline sprema kao 2 underlinea (__) a Firefox ignorira newline, samo ostavi whitespace umijesto newlinea
Sulien wrote: |
inače za string replacement koristiš replace() funkciju
Code: | "foo<br>bar".replace('<br>', "\n") |
|
nisam bio svjestan da mogu koristiti Stringovu funkciju replace bez koristenja regexpa!
U svakom slucaju, hvala, probat cu;
a ako netko ima volje sagraditi regexp i dalje je moja molba otvorena |
|
|
Back to top |
|
|
Sulien
Joined: 04 Jan 2004 Posts: 2905 Location: Zagreb
|
Posted: 18.09.2006 20:45 Post subject: |
|
|
dabac, ti ne razumiješ što su regexpi i čemu služe |
|
|
Back to top |
|
|
dabac
Joined: 30 May 2006 Posts: 57
|
Posted: 18.09.2006 20:50 Post subject: |
|
|
Sulien wrote: | dabac, ti ne razumiješ što su regexpi i čemu služe |
Pa ako se ne varam, regular expressions sluze pretrazivanju nekog patterna u stringu a i zamjeni istog... ili ne?
A ako te cudi moje cudjenje da u metodi replace() ne moram koristiti reg.exp., evo zasto (O'Reilly):
replace (regexpression, replaceString)
Returns the new string that results when matches of regexpression parameter are replaced by the replaceString parameter... |
|
|
Back to top |
|
|
retro_one
Joined: 16 Sep 2003 Posts: 880 Location: DUBRAVA.
|
Posted: 18.09.2006 22:58 Post subject: |
|
|
pa to i je regular expression koji trazi sve sto pase u pattern "<br>", to sto pattern ne sadrzi nikakve modifiere ne znaci da se ne radi o regular expressionu. isto si mogao napisati
Code: | 'Testoar'.replace('ar', '') | i dobiti "Test", a i u ovom slucaju se radi o regular expressionu, jednostavnom, ali i dalje regular expressionu |
_________________ Just your average eccentric programmer. |
|
Back to top |
|
|
dabac
Joined: 30 May 2006 Posts: 57
|
Posted: 18.09.2006 23:19 Post subject: |
|
|
Aha, I get it: '<br>' je u biti sam po sebi regular expression...
Bez obzira na to, replace('br', "\n") ne radi dobro; napravi zamijenu samo u jednom pojavljivanju, a ostalim redovima ostavlja <br>.
Code: |
var postittext="1<br>2<br>3";
postittext=postittext.replace('<br>', "\n");
alert(postittext);
|
Ispis je:
1
2<br>3 |
|
|
Back to top |
|
|
retro_one
Joined: 16 Sep 2003 Posts: 880 Location: DUBRAVA.
|
Posted: 18.09.2006 23:22 Post subject: |
|
|
dabac wrote: | Aha, I get it: '<br>' je u biti sam po sebi regular expression...
Bez obzira na to, replace('br', "\n") ne radi dobro; napravi zamijenu samo u jednom pojavljivanju, a ostalim redovima ostavlja <br>.
Code: |
var postittext="1<br>2<br>3";
postittext=postittext.replace('<br>', "\n");
alert(postittext);
|
|
treba ti global modifier (ccc sulien ) mislim da to izgleda ovako:
Code: | "text<br>bla<br><br>bla<br>".replace(/<br>/g, "\n") |
|
_________________ Just your average eccentric programmer. |
|
Back to top |
|
|
dabac
Joined: 30 May 2006 Posts: 57
|
Posted: 18.09.2006 23:33 Post subject: |
|
|
O, majstore retro_one!
Vidi se tko zna... |
|
|
Back to top |
|
|
|