konto usunięte

Temat: regular expressions

Witam

Potrzebuje pomocy lekkiej, bo juz mnie @#$!@#$%$@#%!# trafia :)


var input = 'Cos fajnego, cudownego i fajnego i jeszcze raz fajnego';
var replaceThis = 'fajnego';

var newStuff = input.replace(/replaceThis/g,"wypasionego");

alert(newStuff);


efekt tego powinnien byc taki "Cos wypasionego, cudownego i wypasionego i jeszcze raz wypasionego".

Problem polega na tym ze nie jest...
chodzi oto abym mogl w regexie uzyc zmiennej, ktore w moim prawdziwym przypadku jest czescia calego arraya.
Wiem ze to: input.replace(/replaceThis/g,"wypasionego"); nie bedzie dzialac, zadziala jesli recznie zamienie "replaceThis" na "fajnego". Wtedy wszystkie "fajnego" zastapione beda na "wypasionego".

Pytanie, jak to napisac bym mogl uzywac info ze stringa i wrzucac jako czesc regexa?
Bartek Stańkowski

Bartek Stańkowski front-end & mobile
web developer

Temat: regular expressions

Może tak:

var input = 'Cos fajnego, cudownego i fajnego i jeszcze raz fajnego';

var replaceThis = 'fajnego',
withThis = 'wypasionego';

var newStuff = input.replace( new RegExp( replaceThis, 'g' ), withThis )
alert(newStuff);
Bartek Stańkowski edytował(a) ten post dnia 28.07.10 o godzinie 16:22

konto usunięte

Temat: regular expressions

Dobra..... zignorowac mnie prosze... wlasnie odkrylem ze nadpisywalem zmienna w innym miejscu....

kocham takie sytuacje... POL DNIA zmarnowane bo nie zauwazylem paru literek... ehhh... przynajmniej nastepnym razem bedzie to jedna z pierwszy rzeczy ktore sprawdze!!!

ide po piwo ;)Andrzej Winnicki edytował(a) ten post dnia 28.07.10 o godzinie 17:00
Bartek Stańkowski

Bartek Stańkowski front-end & mobile
web developer

Temat: regular expressions

Łączę się w bólu, znam to… ;)

konto usunięte

Temat: regular expressions

Andrzej Winnicki:
Dobra..... zignorowac mnie prosze... wlasnie odkrylem ze nadpisywalem zmienna w innym miejscu....

kocham takie sytuacje... POL DNIA zmarnowane bo nie zauwazylem paru literek... ehhh... przynajmniej nastepnym razem bedzie to jedna z pierwszy rzeczy ktore sprawdze!!!

ide po piwo ;)Andrzej Winnicki edytował(a) ten post dnia 28.07.10 o godzinie 17:00

po piwie będzie jeszcze gorzej :D

konto usunięte

Temat: regular expressions

Piotr Lewandowski:
po piwie będzie jeszcze gorzej :D

Po wiecej niz jednym piwie nie dotykam kodu - to jak prowadzenie samochodu :D
Razu pewnego cos namieszalem a potem tydzien spedzilem szukajac gdzie ja do cholery zrobilem blad, bo edytowalem milion roznych plikow, a kod nie byl moj :D

konto usunięte

Temat: regular expressions

Andrzej Winnicki:
Piotr Lewandowski:
po piwie będzie jeszcze gorzej :D

Po wiecej niz jednym piwie nie dotykam kodu - to jak prowadzenie samochodu :D

Dobra decyzja :D
Razu pewnego cos namieszalem a potem tydzien spedzilem szukajac gdzie ja do cholery zrobilem blad, bo edytowalem milion roznych plikow, a kod nie byl moj :D

Normalnie wspomniałbym coś o SVN... Ale po pijaku to i tak nic nie da :D

konto usunięte

Temat: regular expressions

Pomyłka pomyłką, piwo piwem, ale tak jak koledzy słusznie zauważyli bez użycia obiektu RegExp i tak by się nie obeszło. Metoda replace() nie spodziewa się w każdym razie stringa...

konto usunięte

Temat: regular expressions

Krzysztof Kozłowski:
Pomyłka pomyłką, piwo piwem, ale tak jak koledzy słusznie zauważyli bez użycia obiektu RegExp i tak by się nie obeszło. Metoda replace() nie spodziewa się w każdym razie stringa...

Tak, do tego doszedlem....
Wiedzialem ze regexa bede potrzebowac ale mialem wrazenie ze ustawiajac go jako zmienna, potem przekazujac do obiektu regexa, a potem do replace() on to nadal widzi jako string... bo pojedyczne slowo mi zamienial a to co bylo wiele razy - nie...
Maly problem jaki mialem... w loopie za kazdym razem kiedy robilem podmianke, robilem ja na zrodlowym inpucie... wiec robil loopa 3 razy (albo wiecej) ale zawsze uzywajac inputa, a nie tego co juz zostalo potencjalnie zreplacowane :)

Tym oto sposobem zmarnowalem pol dnia, bo tak sie akurat zlozylo ze tylko pierwsza rzecz byla multi, a reszta pojedyncza. Mala glupota, zmiana zajela mi kilka sekund... ale napewno bede teraz pamietac o tym.
Wlasnie na takich glupotach i zmarnowanych godzinach czlowiek uczy sie weryfikowania linijka, po linijce, zwracajac uwage na kazdy cholerny znak.

ps. glupie ze replace() nie moze uzyc stringa i po prostu go zastapic wielokrotnie, musi miec regexa.

konto usunięte

Temat: regular expressions

Krzysztof Kozłowski:
Metoda replace() nie spodziewa się w każdym razie stringa...
Etam...

alert(('ala ma asa').replace('asa','psa'));


;>

konto usunięte

Temat: regular expressions

Sławomir Zimosz:
alert(('ala ma asa').replace('asa','psa'));

;>

:) zgoda, TAK w konstrukcji .replace('','') ale nie w .replace(//,'')
Szymon Piłkowski

Szymon Piłkowski Senior JavaScript
Developer

Temat: regular expressions

alert(('ala ma asa').replace('asa','psa'));

tyle, że przy użyciu stringa nie możemy ustawić parametru global. czyli tylko pierwsze wystąpienie będzie zamienione.

EDIT: a jednak może. sprostowanie w moim następnym poście ;)Szymon Piłkowski edytował(a) ten post dnia 29.07.10 o godzinie 01:59

konto usunięte

Temat: regular expressions

Co nie zmienia faktu, że nieprawdziwe jest stwierdzenie, iż metoda replace() nie spodziewa się stringa. O to się przyczepiłem i Krzysiek pewnie wie dlaczego ;)
Szymon Piłkowski

Szymon Piłkowski Senior JavaScript
Developer

Temat: regular expressions

Andrzej Winnicki:
ps. glupie ze replace() nie moze uzyc stringa i po prostu go zastapic wielokrotnie, musi miec regexa.

"foobarbar".replace("bar", "bas", "gi");


odwołuję tym samym swojego własnego posta powyżej ;-)
chociaż właściwie ECMA-262 o tym nie wspomina, więc może to być jakiś non-standard feature w Gecko (nie mam w tej chwili jak sprawdzić w innych przeglądarkach).

wyrywek z ECMA:

If searchValue is a regular expression (an object whose [[Class]] internal property is "RegExp"), do the following: If searchValue.global is false, then search string for the first match of the regular expression searchValue. If searchValue.global is true, then search string for all matches of the regular expression searchValue. Do the search in the same manner as in String.prototype.match, including the update of searchValue.lastIndex. Let m be the number of left capturing parentheses in searchValue (using NcapturingParens as specified in 15.10.2.1).
If searchValue is not a regular expression, let searchString be ToString(searchValue) and search string for the first occurrence of searchString. Let m be 0.
Szymon Piłkowski edytował(a) ten post dnia 29.07.10 o godzinie 02:05
Paweł Piskorz

Paweł Piskorz koder HTML/CSS

Temat: regular expressions

Andrzej Winnicki:

Po wiecej niz jednym piwie nie dotykam kodu - to jak prowadzenie samochodu :D
Razu pewnego cos namieszalem a potem tydzien spedzilem szukajac gdzie ja do cholery zrobilem blad, bo edytowalem milion roznych plikow, a kod nie byl moj :D

Nie wiem co gorsze, zrobić błąd po pijaku, czy zrobić dobrze ale potem na trzeźwo nie potrafić zrozumieć jak dane rozwiązanie działa ;)

Następna dyskusja:

Les expressions francaises




Wyślij zaproszenie do