মান লিজিয়ে, আমাদের একটি ফাংশন লিখতে হবে, নাম ধরি translate() যা প্রথম আর্গুমেন্ট হিসেবে একটি স্ট্রিং নিবে এবং তারপর যেকোনো সংখ্যক ওয়ার্ড।
স্ট্রিংয়তে আসলে n সংখ্যক $ সাইন থাকবে এইরকম -
This $0 is more $1 just a $2. তারপর ৩টি স্ট্রিং থাকবে যেগুলো কোরেসপন্ডিং জায়গাগুলো রিপ্লেস করবে।
উদাহরণস্বরূপ -
যদি ফাংশন কল হয় এইরকম -
translate('This $0 is more $1 just a $2.', 'game', 'than', 'game');তবে ফাংশনের আউটপুট হবে -
This game is more than just a game.
এই ফাংশনালিটি মোটামুটি জাভাস্ক্রিপ্টের টেমপ্লেট ইনজেকশনের মতো।
তাহলে এই ফাংশনের কোড লিখি -
আমরা String.prototype.replace() মেথড ব্যবহার করব। আমরা জানি যদি রেজেক্স প্যাটার্ন ব্যবহার করে সব অকরেন্স ম্যাচ করি এবং দ্বিতীয় প্যারামিটারে একটি ফাংশন দিই, তবে প্রতিটি ম্যাচের জন্য সেটি এক্সিকিউট হবে। আমরা একই কাজ এখানে করব।
এটি করার কোড হবে -
উদাহরণ
const str = 'This $0 is more $1 just a $2'; const translate = (str, ...texts) => { const regex = /\$(\d+)/gi; return str.replace(regex, (item, index) => { return texts[index]; }); }; console.log(translate(str, 'game', 'just', 'game'));আউটপুট
কনসোলে আউটপুট হবে -
This game is more just just a game