⊗jsSpRERMC 127 of 294 menu

Callback meetodis replace JavaScripti regulaaravaldistes

Meetod replace võib teise parameetrina võtta mitte ainult stringi, vaid ka callback-funktsiooni, mida rakendatakse iga leitud sobivuse korral. Iga alamstring, mille regulaaravaldis leidis, asendatakse sellega, mida see funktsioon tagastab just selle alamstringi jaoks.

Sellele funktsioonile saab parameetreid edastada: esimesse parameetrisse pandakse leitud string, teise parameetrisse - esimene grupp (pocket), kolmandasse parameetrisse - teine grupp ja nii edasi - saab teha nii palju parameetreid, kui palju gruppe regulaaravaldises on.

Eelviimase parameetrisse pandakse leitud sobivuse positsioon, ja viimasse - kogu string, mille peal otsing tehakse.

Kuidas see kõik töötab - vaatame praktiliste näidete varal.

Näide

Olgu antud string numbritega:

let str = '2 3 4 5';

Asendame need numbrid nende ruutudega. Alustuseks vaatame lihtsalt meie numbreid üksteise järel konsooli välja callback-funktsioonis:

str.replace(/\d+/g, function(match) { console.log(match); });

Meie kood väljastab kõigepealt '2', siis '3', '4' ja '5'. See tähendab, et muutujasse match satuvad järjest need stringid, mille regulaaravaldis leidis.

Lahendame ülesande lõpuni - tõstame match ruutu ja tagastame selle kasutades return. Saame, et leitud kahe jaoks tagastatakse 4 ja kaksik asendatakse selle neljaga, leitud kolmiku jaoks tagastatakse 9 ja kolmik asendatakse selle üheksaga - ja nii edasi:

let result = str.replace(/\d+/g, function (match) { return match**2; }); console.log(result); // väljastab '4 9 16 25'

Näide

Olgu nüüd stringis antud konstruktsioonid kujul '2+3=':

let str = '2+3= 4+5= 6+7=';

Teeme nii, et pärast võrdusmärki pannakse vastavate numbrite summad. See tähendab, meie string peaks muutuma järgnevaks:

'2+3=5 4+5=9 6+7=13'

Ülesande lahendamiseks katsetame jälle - paneme esimese ja teise liidetava eraldi gruppidesse:

str.replace(/(\d+)\+(\d+)=/g, function (match0, match1, match2) { console.log(match0, match1, match2); });

Ja nüüd lahendame ülesande lõplikult: iga leitud alamstringi jaoks liidame esimese ja teise grupi, võtame nullinda gruppi (leitud stringi, näiteks '2+3='), lisame sellele tulemuse ja tagastame kõik selle läbi return:

let result = str.replace(/(\d+)\+(\d+)=/g, function(match0, match1, match2) { let sum = Number(match1) + Number(match2); return match0 + sum; }); console.log(result);

Praktilised ülesanded

Antud string:

let str = 'aaa [2] bbb [3] ccc [12] ddd';

Leidke numbrid, mis on sulgudes ja suurendage neid kaks korda. See tähendab, meie stringist peaks saama järgmine:

'aaa [4] bbb [6] ccc [24] ddd'

Antud string:

let str = '123 456 789';

Leidke kõik numbrid ja pöörake nende numbreid vastupidises järjekorras. See tähendab, meie stringist peaks saama järgmine:

'321 654 987'

Antud string kuupäevadega:

let str = '31.12.2025 30.11.2024 29.10.2023';

Leidke kõik kuupäevad ja teisendage need teise vormingusse nii, et saaks järgmine string:

'2025-12-31 2024-11-30 2023-10-29'
Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu