⊗jsSpRERMC 127 of 294 menu

Atgalinio kvietimo funkcija replace metode su reguliariaisiais reiškiniais JavaScript

Replace metodas antrą parametrą gali priimti ne tik eilutę, bet ir atgalinio kvietimo funkciją, kuri bus pritaikyta kiekvienam rastam atitikmeniui. Kiekviena eilutės dalis, kurią rado reguliarusis reiškinys, bus pakeista tuo, ką grąžins ši funkcija būtent tai eilutės daliai.

Į šią funkciją galima perduoti parametrus: į pirmą parametrą bus padėta rasta eilutė, į antrą parametrą - pirmoji "kišenė", į trečią parametrą - antroji "kišenė" ir taip toliau - galima daryti tiek parametrų, kiek "kišenių" reguliarajame reiškinyje.

Į priešpaskutinį parametrą bus padėta pozicija rasto atitikmens, o į paskutinį - visa eilutė, kurioje vykdoma paieška.

Kaip visa tai veikia - išnagrinėsime praktiniais pavyzdžiais.

Pavyzdys

Tegu duota eilutė su skaičiais:

let str = '2 3 4 5';

Pakeiskime šiuos skaičius jų kvadratais. Pirmiausia tiesiog išveskime savo skaičius paeiliui į konsolę atgalinio kvietimo funkcijoje:

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

Mūsų kodas iš pradžių išves '2', paskui '3', '4' ir '5'. Tai yra, į kintamąjį match paeiliui pateks tos eilutės, kurias rado reguliarusis reiškinys.

Išspręskime užduotį iki galo - kelsime match kvadratu ir grąžinsime jį naudodami return. Gausis, kad už rastą dvejetą bus grąžintas 4 ir dvejetas bus pakeistas šiuo ketvertu, už rastą trejetą bus grąžintas 9 ir trejetas bus pakeistas šiuo devynetu - ir taip toliau:

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

Pavyzdys

Tegu dabar eilutėje pateiktos konstrukcijos tipo '2+3=':

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

Padarykime taip, kad po lygybės ženklo būtų įterptos atitinkamų skaičių sumos. Tai yra, mūsų eilutė turėtų virsti šia:

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

Spręsdami užduotį vėl paeksperimentuokime - išskirkime pirmą ir antrą dėmenis į atskiras "kišenes":

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

O dabar galutinai išspręskime užduotį: kiekvienai rastai eilutės daliai susumuokime pirmą ir antrą "kišenes", paimkime nulinę "kišenę" (rastą eilutę, pavyzdžiui '2+3='), pridėkime prie jos rezultatą ir grąžinkime visa tai per return:

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

Praktinės užduotys

Duota eilutė:

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

Raskite skaičius, esančius skliaustuose ir padidinkite juos dvigubai. Tai yra, iš mūsų eilutės turėtų gautis tokia:

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

Duota eilutė:

let str = '123 456 789';

Raskite visus skaičius ir apverskite jų skaitmenis atvirkštine tvarka. Tai yra, iš mūsų eilutės turėtų gautis tokia:

'321 654 987'

Duota eilutė su datomis:

let str = '31.12.2025 30.11.2024 29.10.2023';

Raskite visas datas ir paverskite jas kitu formatu taip, kad gautųsi tokia eilutė:

'2025-12-31 2024-11-30 2023-10-29'
Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti