ایک مضمون، ٹویٹ، یا بلاگ پوسٹ لکھتے وقت، اپنے الفاظ کی گنتی اور کرداروں کی گنتی پر نظر رکھنا بہت ضروری ہے۔
اس ٹیوٹوریل میں، ہم شروع سے ایک مکمل خصوصیات والا ریئل ٹائم ورڈ کاؤنٹر ٹول بناتے ہیں۔ یہ ساخت کے لیے HTML، صاف ڈیزائن کے لیے CSS، اور حساب کی منطق کو سنبھالنے کے لیے ونیلا جاوا اسکرپٹ کا استعمال کرتا ہے۔
یہ ٹول مکمل طور پر آپ کے براؤزر میں چلتا ہے، لہذا یہ آپ کے ٹائپ کرتے ہی کام کرتا ہے اور آپ کے ٹیکسٹ ڈیٹا کو مکمل طور پر نجی رکھتا ہے۔
آئیے شروع کرتے ہیں۔
شرطیں
آسانی سے اس گائیڈ پر عمل کرنے کے لیے، آپ کو ضرورت ہو گی:
-
ایچ ٹی ایم ایل ٹیگز اور سی ایس ایس اسٹائلز کی بنیادی تفہیم۔
-
جاوا اسکرپٹ کے تصورات جیسے فنکشنز، ایونٹ سننے والے، اور بنیادی ریگولر ایکسپریشنز (Regex) کا علم۔
-
کوڈ ایڈیٹرز اور ویب براؤزرز، جیسے VS کوڈ۔
انڈیکس
مرحلہ 1: اپنا پروجیکٹ مرتب کریں۔
سب سے پہلے آپ کو اپنی ورک اسپیس سیٹ اپ کرنے کی ضرورت ہے۔ اپنے کمپیوٹر پر ایک نیا فولڈر بنائیں اور اسے ایک نام دیں۔ word-counter-app.
اس فولڈر کے اندر، تین خالی فائلیں بنائیں۔
-
index.html -
style.css -
script.js
مرحلہ 2: ایچ ٹی ایم ایل کا ڈھانچہ بنانا
آپ کا index.html فائل آپ کو ایک لے آؤٹ بنانے کی ضرورت ہوگی جس میں ایک ہیڈر، حقیقی وقت کے اعدادوشمار کو ظاہر کرنے کے لیے ایک گرڈ، صارفین کے داخل ہونے کے لیے ٹیکسٹ ایریا، اور متن کو کاپی کرنے یا صاف کرنے کے لیے بٹن شامل ہوں۔
اپنی HTML فائل میں درج ذیل کوڈ شامل کریں:
Word Counter Tool
ایچ ٹی ایم ایل کو سمجھنا:
-
کہ
.stats-grid: گنتی کو ظاہر کرنے کے لیے یہاں چار علیحدہ خانے ہیں۔ ہر نمبر کا اپنا منفرد نمبر ہوتا ہے۔id(شب بخیرwordCount) جاوا اسکرپٹ کے لیے انہیں تلاش کرنا اور اپ ڈیٹ کرنا آسان بنانا۔ -
کہ
: یہ بنیادی ان پٹ باکس ہے جہاں صارف مواد ٹائپ یا پیسٹ کرتے ہیں۔ -
کہ
ٹیگ: یہ HTML کو اس منطق سے جوڑتا ہے جسے ہم اگلے مرحلے میں لکھیں گے۔
اگلا، ہم ٹول کو جدید اور پیشہ ورانہ شکل دیتے ہیں۔ سی ایس ایس گرڈ کا استعمال کرتے ہوئے اسٹیٹ بکس کی کامل سیدھ۔
آپ کا style.css ایک فائل بنائیں اور درج ذیل کوڈ شامل کریں:
:root {
--primary-color: #007bff;
--bg-color: #f8f9fa;
--text-dark: #202124;
--text-muted: #5f6368;
--border-color: #dadce0;
--panel-bg: #ffffff;
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
background-color: var(--bg-color);
color: var(--text-dark);
margin: 0;
padding: 40px 20px;
display: flex;
flex-direction: column;
align-items: center;
}
.header-section {
text-align: center;
margin-bottom: 30px;
}
h1 {
font-size: 2.5rem;
margin: 0 0 10px 0;
font-weight: 800;
}
p.description {
color: var(--text-muted);
max-width: 600px;
margin: 0 auto;
line-height: 1.6;
font-size: 1.1rem;
}
.tool-container {
background-color: var(--panel-bg);
border: 1px solid var(--border-color);
border-radius: 12px;
padding: 24px;
width: 100%;
max-width: 900px;
box-shadow: 0 4px 12px rgba(0,0,0,0.05);
}
/* Stats Grid */
.stats-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
gap: 16px;
margin-bottom: 24px;
}
.stat-box {
background-color: var(--bg-color);
border: 1px solid var(--border-color);
border-radius: 8px;
padding: 16px;
text-align: center;
}
.stat-value {
font-size: 2rem;
font-weight: 700;
color: var(--primary-color);
margin-bottom: 4px;
}
.stat-label {
font-size: 0.9rem;
color: var(--text-muted);
text-transform: uppercase;
letter-spacing: 0.5px;
font-weight: 600;
}
/* Text Area */
textarea {
width: 100%;
height: 250px;
padding: 16px;
border: 1px solid var(--border-color);
border-radius: 8px;
font-size: 1rem;
line-height: 1.6;
resize: vertical;
box-sizing: border-box;
font-family: inherit;
margin-bottom: 20px;
transition: border-color 0.2s ease;
}
textarea:focus {
outline: none;
border-color: var(--primary-color);
}
/* Buttons */
.controls {
display: flex;
gap: 12px;
}
button {
padding: 10px 20px;
font-size: 1rem;
font-weight: 600;
border-radius: 6px;
cursor: pointer;
border: none;
transition: background-color 0.2s ease;
}
.btn-primary {
background-color: var(--primary-color);
color: #ffffff;
}
.btn-primary:hover {
background-color: #0056b3;
}
.btn-secondary {
background-color: transparent;
color: var(--text-dark);
border: 1px solid var(--border-color);
}
.btn-secondary:hover {
background-color: var(--bg-color);
}
سی ایس ایس کو سمجھنا:
-
CSS گرڈ: کہ
.stats-gridکلاس کا استعمالgrid-template-columns: repeat(auto-fit, minmax(150px, 1fr));. اس طرح، جب صارف ایک چھوٹی موبائل اسکرین پر ٹول کو دیکھتا ہے، تو چار اسٹیٹ بکس خود بخود ایک دوسرے کے اوپر صاف ستھرا ڈھیر ہوجاتے ہیں۔ -
CSS متغیرات: استعمال کریں
:rootسب سے اوپر پر طے شدہ نیلا رنگ (#007bff)۔
اس وقت، ٹول کا بصری ڈیزائن مکمل ہو گیا ہے۔ براؤزر میں، حتمی لفظ کاؤنٹر اس طرح ظاہر ہوتا ہے:
مرحلہ 4: JavaScript Logic شامل کریں۔
اب ہمیں ٹول کو متن شمار کرنے کی ضرورت ہے۔ ہم ایک ایونٹ سننے والا استعمال کریں گے جو تمام کی اسٹروکس کو دیکھتا ہے۔ ہر لفظ، کردار، جملہ، یا پیراگراف کو صارف کی اقسام کے طور پر دوبارہ شمار کیا جاتا ہے۔
آپ کا script.js ایک فائل بنائیں اور اس میں درج ذیل کوڈ کو پیسٹ کریں۔
const textInput = document.getElementById('textInput');
const wordCountDisplay = document.getElementById('wordCount');
const charCountDisplay = document.getElementById('charCount');
const sentenceCountDisplay = document.getElementById('sentenceCount');
const paragraphCountDisplay = document.getElementById('paragraphCount');
const copyBtn = document.getElementById('copyBtn');
// 1. Listen for user input in real-time
textInput.addEventListener('input', updateStatistics);
// 2. The Core Counting Logic
function updateStatistics() {
const text = textInput.value;
// Character Count (includes spaces)
charCountDisplay.textContent = text.length;
// Word Count
const words = text.match(/S+/g) || [];
wordCountDisplay.textContent = words.length;
// Sentence Count
const sentences = text.split(/[.!?]+(?=s|$)/).filter(sentence => sentence.trim().length > 0);
sentenceCountDisplay.textContent = sentences.length;
// Paragraph Count
const paragraphs = text.split(/n+/).filter(paragraph => paragraph.trim().length > 0);
paragraphCountDisplay.textContent = paragraphs.length;
}
// 3. Copy functionality
function copyText() {
if (!textInput.value) return;
textInput.select();
document.execCommand('copy');
// Provide visual feedback
copyBtn.textContent="Copied!";
setTimeout(() => {
copyBtn.textContent="Copy Text";
}, 1500);
}
// 4. Clear functionality
function clearText() {
textInput.value="";
updateStatistics(); // Reset counts to zero
}
جاوا اسکرپٹ کو سمجھنا:
-
کہ
inputواقعہ:textInput.addEventListener('input', ...)یہ حقیقی وقت کی تازہ کاریوں کا راز ہے۔ کیلکولیشن کے افعال عین اس وقت چلتے ہیں جب آپ کوئی کلید دباتے ہیں یا متن چسپاں کرتے ہیں۔ -
الفاظ شمار کریں:
text.match(/S+/g)ایک باقاعدہ اظہار جو غیر وائٹ اسپیس حروف کی ایک غیر منقطع تار تلاش کرتا ہے۔ یہ سفید جگہ کے ذریعے متن کو تقسیم کرنے سے کہیں زیادہ درست ہے کیونکہ یہ غلطی سے پیچھے رہ جانے والی کسی بھی اضافی خالی جگہ کو نظر انداز کر دیتا ہے۔ -
جملے شمار کریں: کہ
.split(/[.!?]+(?=s|$)/)منطق متن کو ٹکڑوں میں کاٹ دیتی ہے جب بھی وقفہ، فجائیہ یا سوالیہ نشان کے بعد کوئی جگہ ظاہر ہوتی ہے۔
مرحلہ 5: اپنی درخواست کی جانچ کریں۔
کوڈنگ مکمل طور پر ہو چکی ہے! اب یہ چیک کرنے کا وقت ہے کہ ہماری منطق صحیح طریقے سے کام کرتی ہے۔
-
آپ کا
word-counter-appفولڈر -
ڈبل کلک کریں
index.htmlفائل کو ویب براؤزر میں کھولا جا سکتا ہے۔ -
متن والے حصے میں چند جملے درج کریں۔ فوری طور پر سب سے اوپر کی تازہ کاری میں نمبر دیکھیں۔
-
ایک نیا پیراگراف بنانے کے لیے، ایک ڈبل اسپیس شامل کریں (یا "Enter" دبائیں) اور یقینی بنائیں کہ آپ کی منطق اس کا صحیح حساب کرتی ہے۔
-
کلک کریں متن کاپی کریں۔ کلپ بورڈ فنکشن کی جانچ کریں۔ واضح بورڈ کو دوبارہ ترتیب دینے کے لیے
اس پروجیکٹ کو مکمل کرکے، آپ نے خالص ونیلا جاوا اسکرپٹ کا استعمال کرتے ہوئے ایک تیز رفتار کلائنٹ سائیڈ یوٹیلیٹی ٹول بنایا ہے۔ آپ نے سیکھا کہ کس طرح تاروں کو جوڑنا ہے، متن کے تجزیہ کے لیے ریگولر ایکسپریشنز کا استعمال کرنا ہے، اور ایک جوابی UI گرڈ بنانا ہے۔
حقیقی پیداواری ماحول میں صحیح کوڈ بیس کو چلانے کے لیے اس آن لائن ورڈ کاؤنٹر کو آزمائیں۔ تعمیر کرتے رہیں اور کوڈنگ کا مزہ لیں!