সমস্যা
একটি স্ট্রিং (যাতে স্পেস থাকতে পারে) এবং একটি সংখ্যা num দেওয়া আছে। প্রথমে স্ট্রিং থেকে সব স্পেস সরাতে হবে, তারপর সেটিকে num দৈর্ঘ্যের চান্ক (chunk) এ ভাগ করতে হবে। শেষ চান্কটি ছোট হতে পারে।
উদাহরণ কোড
const num = 5;
const str = 'This is an example string';
const splitString = (str = '', num = 1) => {
str = str.replace(/\s/g, ''); // সব স্পেস সরান
const arr = [];
for (let i = 0; i < str.length; i += num) {
arr.push(str.slice(i, i + num));
}
return arr;
};
console.log(splitString(str, num));
আউটপুট
[ 'Thisi', 'sanex', 'ample', 'strin', 'g' ]
ব্যাখ্যা
str.replace(/\s/g, '')- রেগেক্স দিয়ে সব হোয়াইটস্পেস সরানো হয়েছে।- লুপ
i += numধাপে চলে, প্রতিবারslice(i, i+num)দিয়ে চান্ক কাটা হয়। - শেষ চান্কটি (
'g') দৈর্ঘ্য ১, কারণ স্ট্রিংয়ের দৈর্ঘ্য ২১, ৫ দিয়ে ভাগশেষ ১।
আধুনিক সংক্ষিপ্ত সংস্করণ
const splitStringModern = (str, num) =>
str.replace(/\s/g, '').match(new RegExp(`.{1,${num}}`, 'g')) || [];
console.log(splitStringModern('This is an example string', 5));
// ['Thisi', 'sanex', 'ample', 'strin', 'g']
Regex ব্যাখ্যা
.{1,5}- ১ থেকে ৫টি যেকোনো ক্যারেক্টার (নন-গ্রিডি)g- গ্লোবাল, সব মিল খুঁজে|| []- যদি ম্যাচ না পায় (খালি স্ট্রিং), খালি অ্যারে রিটার্ন
প্রয়োগের ক্ষেত্র
- টেক্সট ফরম্যাটিং (যেমন: ক্রেডিট কার্ড নম্বর, ফোন নম্বর গ্রুপিং)
- ডেটা ট্রান্সমিশন için ফিক্সড-লেন্থ প্যাকেট তৈরি
- ক্রিপ্টোগ্রাফি/এনকোডিং এলগরিদমে ব্লক প্রসেসিং