JavaScript නිත්ය ප්රකාශනවල exec ක්රමය
exec ක්රමය නිත්ය ප්රකාශනය භාවිතයෙන්
තන්තුවක ගවේෂණය කරයි.
එහි ප්රතිඵලය ලෙස හමු වූ උපතන්තුව සහ
එහි කාපු (capturing) ගෝල ආපසු ලබා දෙයි.
මෙම ක්රමය සෑම ඊළඟ කාල ප්රකාශයකදීම
පෙර අවසන් වූ ස්ථානයේ සිට ගවේෂණය ආරම්භ කරයි.
අපි උදාහරණයක් බලමු. අපට පහත සඳහන් තන්තුව ඇතැයි සිතමු:
let str = '12 34 56';
අපට පහත සඳහන් නිත්ය ප්රකාශනය ඇතැයි සිතමු:
let reg = /\d+/g;
අපි අපගේ තන්තුව සඳහා අපගේ ක්රමය අනුක්රමිකව කැඳවමු:
let res1 = reg.exec(str);
console.log(res1[0]); // 12
let res2 = reg.exec(str);
console.log(res2[0]); // 34
let res3 = reg.exec(str);
console.log(res3[0]); // 56
කැඳවීම් තුනකින් පසු, අපගේ
තන්තුවේ තවත් නිත්ය ප්රකාශනයට ගැලපෙන ඒවා නොමැති නිසා,
ක්රමයේ ඊළඟ කාල ප්රකාශය
null ආපසු ලබා දෙයි:
let res4 = reg.exec(str);
console.log(res4); // null
මෙම ක්රමයේ මෙම විශේෂාංගය ප්රයෝජනවත් වන්නේ ලූපයක් තුළ භාවිතා කිරීමටය:
let str = '12 34 56';
let reg = /\d+/g;
let res;
while (res = reg.exec(str)) {
console.log(res); // [12], [34], [56]
}
ගැලපීම පමණක් නොව, එය කාපු ගෝලවලට ද විය හැකිය:
let str = '12 34 56';
let reg = /(\d)(\d)/g;
let res;
while (res = reg.exec(str)) {
console.log(res); // [12, 1, 2], [34, 3, 4], [56, 5, 6]
}
පහත සඳහන් තන්තුව ලබා දී ඇත:
let str = '12:37:57 15:48:58 17:59:59';
එහි ඇති සියලුම කාල උපතන්තු සොයා ගන්න සෑම හමුවක් සඳහාම පැය, මිනිත්තු සහ තත්පර කාපු ගෝලවලට වෙන් කරන්න.