⊗jsSpRERMC 127 of 294 menu

კოლბექი replace-ის მეთოდში რეგულარულ გამოსახულებებში JavaScript-ში

replace-ის მეთოდს მეორე პარამეტრად შეუძლია მიიღოს არა მხოლოდ სტრიქონი, არამედ ფუნქცია-კოლბექი, რომელიც გამოყენებულ იქნება ყოველი ნაპოვნი დამთხვევისთვის. ყველა ქვესტრიქონი, რომელიც რეგულარულმა გამოსახულებამ იპოვა, შეიცვლება იმით, რასაც ეს ფუნქცია დააბრუნებს ზუსტად ამ ქვესტრიქონისთვის.

ამ ფუნქციას შეუძლია პარამეტრების მიღება: პირველ პარამეტრში ჩაიწერება ნაპოვნი სტრიქონი, მეორე პარამეტრში - პირველი ჯიბე, მესამე პარამეტრში - მეორე ჯიბე და ა.შ. - შესაძლებელია იმდენი პარამეტრის გაკეთება, რამდენი ჯიბეც არის რეგულარულ გამოსახულებაში.

წინაბოლო პარამეტრში ჩაიწერება პოზიცია ნაპოვნი დამთხვევისა, ხოლო ბოლოში - მთელი სტრიქონი, რომელზეც ხდება ძიება.

როგორ მუშაობს ეს ყველაფერი - განვიხილავთ პრაქტიკულ მაგალითებზე.

მაგალითი

მოდით, მოცემულია სტრიქონი რიცხვებით:

let str = '2 3 4 5';

მოდით, შევცვალოთ ეს რიცხვები მათი კვადრატებით. დასაწყისისთვის მოდით, უბრალოდ გამოვიტანოთ ჩვენი რიცხვები თანმიმდევრობით კონსოლში ფუნქცია-კოლბექში:

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

ჩვენმა კოდმა ჯერ გამოიტანს '2', შემდეგ '3', '4' და '5'. ანუ ცვლადში match თანმიმდევრულად ხვდებიან ის სტრიქონები, რომლებიც რეგულარულმა გამოსახულებამ იპოვა.

მოდით, ამოვხსნათ ამოცანა ბოლომდე - ავიყვანოთ match კვადრატში და დავაბრუნოთ ის return-ის საშუალებით. გამოვა, რომ ნაპოვნი ორისთვის დააბრუნებს 4 და ორი შეიცვლება ამ ოთხით, ნაპოვნი სამისთვის დააბრუნებს 9 და სამი შეიცვლება ამ ცხრით - და ა.შ.:

let result = str.replace(/\d+/g, function (match) { return match**2; }); console.log(result); // გამოიტანს '4 9 16 25'

მაგალითი

მოდით, ახლა სტრიქონში მოცემულია კონსტრუქციები ფორმის '2+3=':

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

მოდით, გავაკეთოთ ისე, რომ ტოლობის შემდეგ ჩაისვას შესაბამისი რიცხვების ჯამები. ანუ ჩვენი სტრიქონი უნდა გარდაიქმნას შემდეგში:

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

ამოცანის ამოსახსნელად მოდით, ისევ ჩავატაროთ ექსპერიმენტი - გადავანაწილოთ პირველი და მეორე დამატებები ცალკეულ ჯიბეებში:

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

ახლა კი საბოლოოდ ამოვხსნათ ამოცანა: ყოველი ნაპოვნი ქვესტრიქონისთვის შევკრიბოთ პირველი და მეორე ჯიბეები, ავიღოთ ნულოვანი ჯიბე (ნაპოვნი სტრიქონი, მაგალითად '2+3='), დავუმატოთ მას შედეგი და დავაბრუნოთ ეს ყველაფერი return-ის საშუალებით:

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

პრაქტიკული ამოცანები

მოცემულია სტრიქონი:

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

იპოვეთ რიცხვები, რომლებიც დგანან ფრჩხილებში და გაზარდეთ ისინი ორჯერ. ანუ ჩვენი სტრიქონიდან უნდა მივიღოთ შემდეგი:

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

მოცემულია სტრიქონი:

let str = '123 456 789';

იპოვეთ ყველა რიცხვი და შეაბრუნეთ მათი ციფრები უკუღმა თანმიმდევრობით. ანუ ჩვენი სტრიქონიდან უნდა მივიღოთ შემდეგი:

'321 654 987'

მოცემულია სტრიქონი თარიღებით:

let str = '31.12.2025 30.11.2024 29.10.2023';

იპოვეთ ყველა თარიღი და გარდაქმენით ისინი სხვა ფორმატში ისე, რომ მივიღოთ შემდეგი სტრიქონი:

'2025-12-31 2024-11-30 2023-10-29'
ქართული
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語Қазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა