অক্ষরের কেস (Case) যাচাই করার পদ্ধতি
জাভাস্ক্রিপ্টে কোনো অক্ষর বড় হাতের (uppercase) কি ছোট হাতের (lowercase) তা জানার সবচেয়ে সহজ উপায় হলো সেই অক্ষরকে সংশ্লিষ্ট কেসে কনভার্ট করে তুলনা করা।
বেসিক লজিক
function checkCase(ch) {
// প্রথমে নম্বর কিনা চেক করুন
if (!isNaN(ch * 1)) {
return 'numeric';
}
// বড় হাতের চেক: নিজে নিজের uppercase-এর সাথে তুলনা
if (ch === ch.toUpperCase()) {
return 'uppercase';
}
// ছোট হাতের চেক: নিজে নিজের lowercase-এর সাথে তুলনা
if (ch === ch.toLowerCase()) {
return 'lowercase';
}
return 'unknown'; // সিম্বল, স্পেস, ইমোজি ইত্যাদি
}
উদাহরণ ও আউটপুট
console.log(checkCase('a')); // 'lowercase'
console.log(checkCase('A')); // 'uppercase'
console.log(checkCase('1')); // 'numeric'
console.log(checkCase('@')); // 'unknown' (নই বড় হাতের নই ছোট হাতের)
উন্নত সংস্করণ: Unicode সাপোর্টসহ
উপরোক্ত পদ্ধতি ASCII-এর জন্য ভালো কাজ করে, কিন্তু ইউনিকোড (বাংলা, ইমোজি, এক্সেন্টেড ল্যাটিন) এর জন্য নিবিড় নয়। আধুনিক পদ্ধতি:
function checkCaseAdvanced(ch) {
if (ch.length !== 1) return 'not-a-single-char';
const code = ch.codePointAt(0);
// নম্বর (০-৯, বাংলা ০-৯, ইত্যাদি)
if (/\p{N}/u.test(ch)) return 'numeric';
// বড় হাতের (Unicode Lu ক্যাটাগরি)
if (/\p{Lu}/u.test(ch)) return 'uppercase';
// ছোট হাতের (Unicode Ll ক্যাটাগরি)
if (/\p{Ll}/u.test(ch)) return 'lowercase';
// অন্যান্য লেটার (Titlecase, Modifier, Other)
if (/\p{L}/u.test(ch)) return 'other-letter';
return 'symbol-or-other';
}
console.log(checkCaseAdvanced('আ')); // 'other-letter' (বাংলা স্বরবর্ণ — Ll বা Lu নয়)
console.log(checkCaseAdvanced('A')); // 'uppercase'
console.log(checkCaseAdvanced('α')); // 'lowercase' (গ্রিক)
console.log(checkCaseAdvanced('١')); // 'numeric' (আরবিক ডিজিট)
Regex প্যাটার্ন এক নজরে
| প্যাটার্ন | অর্থ |
|---|---|
/[A-Z]/ | শুধু ASCII বড় হাতের (A-Z) |
/[a-z]/ | শুধু ASCII ছোট হাতের (a-z) |
/\p{Lu}/u | Unicode Uppercase Letter (সব ভাষা) |
/\p{Ll}/u | Unicode Lowercase Letter (সব ভাষা) |
/\p{L}/u | Unicode যেকোনো লেটার |
/\p{N}/u | Unicode যেকোনো নম্বর |
স্ট্রিং-এর সব অক্ষর চেক করা
function analyzeString(str) {
return [...str].map(ch => ({
char: ch,
type: checkCaseAdvanced(ch)
}));
}
console.table(analyzeString('Hello বাংলা ১২৩!'));
/*
┌─────────┬────────┬──────────────┐
│ (index) │ char │ type │
├─────────┼────────┼──────────────┤
│ 0 │ 'H' │ 'uppercase' │
│ 1 │ 'e' │ 'lowercase' │
│ 2 │ 'l' │ 'lowercase' │
│ 3 │ 'l' │ 'lowercase' │
│ 4 │ 'o' │ 'lowercase' │
│ 5 │ ' ' │ 'symbol-or-other' │
│ 6 │ 'ব' │ 'other-letter' │
│ 7 │ 'া' │ 'other-letter' │
│ 8 │ 'ং' │ 'symbol-or-other' │
│ 9 │ 'ল' │ 'other-letter' │
│ 10 │ 'া' │ 'other-letter' │
│ 11 │ ' ' │ 'symbol-or-other' │
│ 12 │ '১' │ 'numeric' │
│ 13 │ '২' │ 'numeric' │
│ 14 │ '৩' │ 'numeric' │
│ 15 │ '!' │ 'symbol-or-other' │
└─────────┴────────┴──────────────┘
*/
সারামারি: সাধারণ ASCII-এর জন্য ch === ch.toUpperCase() প্যাটার্ন যথেষ্ট। ইউনিকোড/বহুভাষিক সাপোর্টের জন্য Unicode প্রপার্টি এস্কেপ (\p{Lu}, \p{Ll}) সহ Regex ব্যবহার করুন।