বড় স্ট্রিংকে n-সাইজ সাব-স্ট্রিংয়ে ভাগ করার দুটি পদ্ধতি রয়েছে।
১) কনভেনশনাল মেথড
এটি পিউর লজিক মেথড যেখানে কনভেনশনাল মেথডগুলো (ফর লুপ, কনক্যাট, মডুলাস) ব্যবহার করা হয়। এটি রেজেক্স মেথড만큼 সফিস্টিকেটেড নয়, কারণ এটি প্রিডিটারমিনড মেথড। স্ট্রিং কত চাঙ্কে ভাগ হবে তা কোডিং শুরু করার আগে থেকে নির্ধারিত থাকতে হয়।
উদাহরণ
<html> <body>
<script>
var v = [];
var str = "tutorixtutorixtutorix";
var t = str.split("");
document.write(t);
document.write("</br>");
for (var i = 0; i < t.length; i++) {
if ((i % 3) == 2) {
v.push(t[i-2].concat(t[i-1], t[i]));
}
}
document.write(v);
</script>
</body> </html>
আউটপুট
tut,ori,xtu,tor,ixt,uto,rix
২) রেজেক্স মেথড
এটি প্রিডিটারমিনড মেথড নয়। রেজেক্স মেথডে চাঙ্ক সাইজ উল্লেখ করার সুবিধা থাকে।
যেকোনো স্ট্রিং থেকে সর্বোচ্চ n-সাইজ সাব-স্ট্রিং এক্সট্রাক্ট করার সাধারণ সিনট্যাক্স:
str.match(/.{1,n}/g); // n কে সাবস্ট্রিং সাইজ দিয়ে রিপ্লেস করুন
যদি স্ট্রিংয়ে নিউলাইন বা ক্যারিজ রিটার্ন থাকে:
str.match(/(.|[\r\n]){1,n}/g); // n কে সাবস্ট্রিং সাইজ দিয়ে রিপ্লেস করুন
মূল ফাংশন
function chunkString(str, size) {
return str.match(new RegExp('.{1,' + size + '}', 'g'));
}
উদাহরণ
<html> <body>
<script>
stringChop = function(str, size) {
if (str == null) return [];
str = String(str);
return size > 0 ? str.match(new RegExp('.{1,' + size + '}', 'g')) : [str];
}
document.write(stringChop('tutorialspoint'));
document.write("<br>");
document.write(stringChop('tutorix', 2));
document.write("<br>");
document.write(stringChop('tutorialspoint', 3));
</script>
</body> </html>
আউটপুট
["tutorialspoint"] ["tu","to","ri","x"] ["tut","ori","als","poi","nt"]
ব্যাখ্যা
রেজেক্স মেথড বেশি ফ্লেক্সিবল এবং রিয়ูজেবল। match() সাথে রেজেক্স ব্যবহার করে ডাইনামিক চাঙ্ক সাইজ স্পেসিফাই করা যায়।