ভূমিকা
এই আর্টিকেলে একটি ফাংশন তৈরি করা হয়েছে যা একটি স্ট্রিং নেয়, সেটি ট্রিম করে, লোয়ারকেসে রূপান্তর করে, এবং প্রতিটি অক্ষরের আলফাবেটিক পজিশন (a=1, b=2, ..., z=26) দিয়ে একটি নম্বর অ্যারে রিটার্ন করে। স্পেস এবং বিশেষ ক্যারেক্টার বাদ দেওয়া হয়।
সম্পূর্ণ কোড
const str = 'Hello world!';
const mapString = (str) => {
const mappedArray = [];
str
.trim()
.toLowerCase()
.split("")
.forEach(char => {
const ascii = char.charCodeAt();
if (ascii >= 97 && ascii <= 122) { // a-z ASCII রেঞ্জ
mappedArray.push(ascii - 96); // a=97, তাই 97-96=1
}
});
return mappedArray;
};
console.log(mapString(str));
// আউটপুট: [8, 5, 12, 12, 15, 23, 15, 18, 12, 4]
কোড ব্যাখ্যা
- trim() - মুখ ও পুঁড়ের স্পেস সরায়
- toLowerCase() - সব অক্ষর ছোট হাতের করতে
- split("") - স্ট্রিংকে ক্যারেক্টার অ্যারেতে ভাগ করে
- forEach - প্রতিটি ক্যারেক্টার প্রসেস করে
- charCodeAt() - ASCII ভ্যালু পায়
- শর্ত (97-122) - শুধু a-z (ASCII 97-122) গ্রহণ করে
- ascii - 96 - a=1, b=2, ..., z=26 পাওয়ার সূত্র
আউটপুট
[8, 5, 12, 12, 15, 23, 15, 18, 12, 4]
// h=8, e=5, l=12, l=12, o=15, w=23, o=15, r=18, l=12, d=4
বিকল্প ও আধুনিক পদ্ধতিগুলো
১. Map + Filter (ফাংশনাল স্টাইল)
const mapString = str =>
[...str.trim().toLowerCase()]
.filter(c => c >= 'a' && c <= 'z')
.map(c => c.charCodeAt(0) - 96);
২. Reduce (একটি লুপ)
const mapString = str =>
[...str.trim().toLowerCase()]
.reduce((acc, c) => {
const code = c.charCodeAt(0);
if (code >= 97 && code <= 122) acc.push(code - 96);
return acc;
}, []);
৩. Regex + Map
const mapString = str =>
(str.toLowerCase().match(/[a-z]/g) || [])
.map(c => c.charCodeAt(0) - 96);
আলফাবেট পজিশন রেফারেন্স
| অক্ষর | পজিশন | ASCII | অক্ষর | পজিশন | ASCII |
|---|---|---|---|---|---|
| a | 1 | 97 | n | 14 | 110 |
| b | 2 | 98 | o | 15 | 111 |
| c | 3 | 99 | p | 16 | 112 |
| d | 4 | 100 | q | 17 | 113 |
| e | 5 | 101 | r | 18 | 114 |
| f | 6 | 102 | s | 19 | 115 |
| g | 7 | 103 | t | 20 | 116 |
| h | 8 | 104 | u | 21 | 117 |
| i | 9 | 105 | v | 22 | 118 |
| j | 10 | 106 | w | 23 | 119 |
| k | 11 | 107 | x | 24 | 120 |
| l | 12 | 108 | y | 25 | 121 |
| m | 13 | 109 | z | 26 | 122 |
ব্যবহারিক অ্যাপ্লিকেশন
- সিপহার/এনক্রিপশন: সিজার সিপহার, ROT13 ইত্যাদি
- টেক্সট অ্যানালাইসিস: লেটার ফ্রিকোয়েন্সি গণনা
- গেম ডেভেলপমেন্ট: ওয়ার্ড গেম, পাজল
- সর্টিং: অ্যালফাবেটিক্যাল সর্টিংয়ে সাহায্য
সারাংশ
ASCII ভ্যালু ব্যবহার করে সহজে অক্ষরকে সংখ্যাগুলোতে রূপান্তর করা যায়। charCodeAt() - 96 সূত্রটি ছোট হাতের অক্ষরের জন্য কাজ করে। বড় হাতের জন্য - 64 ব্যবহার করুন।